iOS UTF-8 标签字符串

发布时间: 2017/3/21 23:05:15
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有我想要在标签中显示 utf-8 编码字符串。

当我设置一个断点和检查保存字符串的变量时,所有看起来不错。 然而,当我尝试输出到日志中,或标签,我得到拉美编码。

Xcode Screenshot

我试过上等内外,几乎每个建议,但却无法正确显示的字符串。

这里是我的代码︰

NSString *rawString = [NSString stringWithFormat:@"%@",m_value];

const char *utf8String = [rawString UTF8String];
NSLog (@"%@", [NSString stringWithUTF8String:utf8String]);
NSLog (@"%s", utf8String);
NSLog (@"%@", rawString);

self.resultText.text = [NSString stringWithUTF8String:utf8String];

m_value 是 NSString,并在调试窗口中,它也显示正确的编码。

m_value NSString *  0x006797b0 @"鄧樂愚..."
    NSObject    NSObject    
    isa Class   0x3bddd8f4
    [0] Class   

我使用的 iOS 6.1 SDK。

解决方法 1:

所以我终于设法弄个水落石出。

m_value NSString 成立由我本来就没有访问到源的第三方库。 即使这个变量的值正确解码 (即汉字显示) 在调试面板中,字符串实际上用编码 NSMacOSRomanStringEncoding

能够确定这将输出复制到TextWrangler,和翻转编码,直到发现了那个正确转换成 UTF-8.

然后要修复在objective-c,我第一次转换 NSStringconst char :

const char *macString = [bxr.m_value cStringUsingEncoding:NSMacOSRomanStringEncoding];

然后转换回 NSString :

NSString *utf8String = [[NSString alloc]initWithCString:macString encoding:NSUTF8StringEncoding];

+ 1 到 @Vitaly_S 和 @iphonic 的答案最终导致我此解决方案。 为别人一路跌跌撞撞的穿过这;它似乎 Xcode 4.6.1,如调试窗口无法信任呈现字符串正确,但你可以依靠 NSLog 输出。

赞助商