我在使用带有 'ç' 和 'ñ' 等 unicode 字符的 NSString 时遇到问题。一个像这样简单的例子:
NSString *alphabet = @"abçd";
NSLog(@"alphabet is %@", alphabet);
在控制台上输出:
字母表是ab√ßd
如何确保 NSString 正在处理这些 unicode 字符?我通过在线搜索和 NSString 类参考尝试了几种不同的方法,但似乎都没有。
提前致谢。
我在使用带有 'ç' 和 'ñ' 等 unicode 字符的 NSString 时遇到问题。一个像这样简单的例子:
NSString *alphabet = @"abçd";
NSLog(@"alphabet is %@", alphabet);
在控制台上输出:
字母表是ab√ßd
如何确保 NSString 正在处理这些 unicode 字符?我通过在线搜索和 NSString 类参考尝试了几种不同的方法,但似乎都没有。
提前致谢。
您可以确保 NSString 通过输出到文件并从中读取来正确处理它们...
我会以 100% 的把握猜测问题不在于 NSString 而是控制台预期的文本编码,或者源文件的文本编码......可能是前者。
在 Xcode 的调试器中,我得到了预期的输出:
alphabet is abçd
你的测试:
NSString *alphabet = @"abçd";
[alphabet writeToFile:[@"~/Desktop/charTest.txt" stringByExpandingTildeInPath] atomically:NO encoding:NSUTF8StringEncoding error:nil];
您可以尝试使用 UTF-8 编码初始化 NSString
NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding];
代码取自另一个答案——将 UTF-8 编码的 NSData 转换为 NSString