gpt4 book ai didi

ios - 如何在 NSInputStream 上设置编码类型?

转载 作者:行者123 更新时间:2023-11-29 01:31:23 27 4
gpt4 key购买 nike

我需要使用 Windows 1252 编码将图像流式传输到 .NET 后端服务。所以我相信我需要创建一个 NSURLRequest 并将其 HTTPBodyStream 设置为使用图像数据创建的 NSInputStream 。我需要将编码设置为 Windows 1252 或 NSWindowsCP1252StringEncoding。

我确实有两个问题:

  1. 如何告诉 NSInputStream 使用 NSWindowsCP1252StringEncoding 来传递数据或文件。
  2. 如何将 UIImage 转换为“NSWindowsCP1252StringEncoding”数据?我只知道base64方法。

编辑:

这是模仿工作客户端的 .NET 代码示例。

            wr.Method = "POST";
wr.ContentType = "application/octet-stream";
wr.UseDefaultCredentials = true;

string ImagePath = @"C:\Users\smith\Desktop\Cat-and-dog.jpg";

byte[] ibuffer = File.ReadAllBytes(ImagePath);

wr.ContentLength = ibuffer.Length;
Stream pData = wr.GetRequestStream();
pData.Write(ibuffer, 0, ibuffer.Length);
pData.Close();

HttpWebResponse wres = wr.GetResponse() as HttpWebResponse;

Encoding enc = System.Text.Encoding.GetEncoding(1252);

StreamReader strRdr = new StreamReader(wres.GetResponseStream(), enc);
string resp = strRdr.ReadToEnd();

最佳答案

  1. 您不必告诉 NSInputStream 使用什么编码,因为 NSInputStream 不对字符串进行操作。 NSInputStream 为您提供原始字节。您有责任使用您想要的任何输入格式解码这些字节。

    此外,由于您“需要将图像流式传输到 .NET 后端服务”,我认为您需要一个 NSOutputStream,而不是一个 NSInputStream。但这是同样的事情:您将原始字节提供给输出流。您必须自己将字符串编码为字节。

  2. UIImage 转换为任何字符编码的想法有点荒谬,因为 UIImage 是像素数据,而不是文本。您首先必须解码想要如何编码像素数据。假设您想使用 PNG 对其进行编码:

    UIImage *image = ...
    NSData *imageData = UIImagePNGRepresentation(image);
    NSData *imageBase64Data = [imageData base64EncodedDataWithOptions:0];

    此时,imageBase64Data 包含图像,编码为 PNG、编码为 Base 64、编码为 UTF-8。您可能认为这是错误的字符编码,但 Base 64 编码仅使用可打印的 ASCII 字符。由于 CP1252 和 UTF-8 都是 ASCII 的超集,因此 imageBase64Data 的内容也是有效的 CP1252。

    如果您希望对字符串进行显式编码,则可以这样做:

    NSString *imageBase64String = [imageData base64EncodedStringWithOptions::0];
    NSData *imageBase64Data = [imageBase64String dataUsingEncoding: NSWindowsCP1252StringEncoding];

关于ios - 如何在 NSInputStream 上设置编码类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com