【问题标题】:iPhone - Convert NSString encoding from WindowsCP1251 to UTF8iPhone - 将 NSString 编码从 WindowsCP1251 转换为 UTF8
【发布时间】:2011-02-09 08:47:06
【问题描述】:

我怎样才能进行从NSWindowsCP1251StringEncodingUTF-8 的转换? 我进行了几次尝试,但没有人按应有的方式工作。我的最后一次尝试是:

NSData *dt = [mystr dataUsingEncoding:NSUTF8StringEncoding];
NSString *str = [NSString alloc] initWithData:dt encoding:NSWindowsCP1251StringEncoding];

str 的结果不可读。有没有人遇到过类似的情况?

【问题讨论】:

  • 首先如何获取CP1251字符串?
  • 在您的代码示例中,您首先将 mystr 从任何形式转换为 UTF-8,然后创建一个新字符串,但告诉 NSString 它是 CP1251。哪个应该是CP1251?
  • @Bavarious : 字符串来自套接字连接。
  • @Phil : 那么我如何从转换后的 UTF8 数据创建一个 NSString 呢??
  • 当你调用 initWithData:encoding: 时,告诉NSString 它是NSUTF8StringEncoding...

标签: iphone unicode encoding


【解决方案1】:

我认为你是如此接近:

// Convert it back to CP1251
NSData *dt = [mystr dataUsingEncoding:NSWindowsCP1251StringEncoding];

// Now load it as UTF8
NSString *str = [NSString alloc] initWithData:dt encoding:NSUTF8StringEncoding];

【讨论】:

  • 最后一个错误:Encoding必须是数据的编码,所以NSWindowsCP1251StringEncoding。您应该补充一点,NSString 本身没有编码(实际上)。
猜你喜欢
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-27
  • 2015-03-18
  • 1970-01-01
  • 2020-09-30
相关资源
最近更新 更多