我的阵列中有斯堪的纳维亚字母,如æ,ø,å。使用NSLog,输出将这些字母表显示为加扰代码。如何用UTF8编码NSArray?任何帮助表示赞赏。
我只尝试过:
NSArray *nnoWords = [[NSArray arrayWithArray:newNoWords] retain];
NSLog (@"nnoWords: %@ ", nnoWords);
newNoWords是一个NSMutableArray。 nnoWords包含从txt文件中获取的正常对象,如NSString hello,pear,apple等。
编辑2011年8月29日:
nnoWords来自于此,转换为NSMutable,然后返回NSArray,因此称为nnoWords。而words.txt以UTF8编码。
NSArray *noWords = [[NSArray alloc] initWithArray:
[[NSString stringWithContentsOfFile:[[NSBundle mainBundle]
pathForResource:@"words" ofType:@"txt"]
encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]];
我也尝试过:
NSString *norsk = @"æ ø å";
NSLog (@"%@", norsk);
输出正确:
2011-08-29 13:15:23.302 scanner2[29776:207] æ ø å
答案 0 :(得分:2)
问题是Xcode控制台。如果您查看Terminal.app的输出,您将看到它符合预期。
测试用例:
//clang -framework Foundation -o log_utf8 log_utf8.m
#import <Foundation/Foundation.h>
int
main(void)
{
NSString *word = @"en ord på Svenska";
NSLog(@"%@", word);
}
示例输出:
StackOverflow$ clang -framework Foundation log_utf8.m -o log_utf8
StackOverflow$ ./log_utf8
2011-08-28 20:10:09.268 log_utf8[65105:707] en ord på Svenska
如果您在查看Xcode可疑内置控制台以外的其他内容时仍然看到乱码,那么您需要检查如何获取字符串数据:
file
命令可能能够为您解答此问题。答案 1 :(得分:0)
试试这个:
NSLog(@"%S", [[theArray description] cStringUsingEncoding:NSUTF16LittleEndianStringEncoding]);
来自这个问题:NSLog incorrect encoding