我搜索了很多关于UTF8解码的内容,但还没有找到答案。
我从NSXMLParser收到UTF-8解码NSString:
NSString *tempString = @"Test message readability is óké";
在某种程度上,我无法找到将此编码文本更改为:
的方法Test message readability is óké
我可以告诉我尝试的所有选项,但我不认为这是必要的。可以请一些帮助吗?
日Thnx!
答案 0 :(得分:4)
NSXMLParser
将使用XML指定的字符编码处理文本。我相信在你的情况下,XML没有明确指定UTF-8。
文本似乎是ISO Latin 1.如果您无法对生成XML的服务器采取任何措施,那么您可以应用此hack:
char* tempString = [string cStringUsingEncoding:NSISOLatin1StringEncoding];
string = [NSString stringWithUTF8String:tempString];
我已经通过GDB提示测试来验证这是有效的:
po [NSString stringWithUTF8String:(char*)[@"Test message readability is óké" cStringUsingEncoding:5]]
答案 1 :(得分:3)
你做错了。你想要的是:
char *s = "Test message readability is óké";
//Note: this is a one-byte-character C string, not an NSString!
NSString *tempString = [NSString stringWithCString:s encoding:NSUTF8StringEncoding];
还要记住,在初始化字符串常量时,程序内存的实际内容取决于当前文件的编码。如果它已经是UTF-8,则字符将被双重编码 - 你将在C字符串中将字符Ã,³等编码为UTF8。
换句话说,使用字符串常量可能是一个错误的举动。请提供更多问题的背景信息。
答案 2 :(得分:1)
Standart编码和解码如下:
用于编码:
NSString *content = [bodyTextView.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
用于解码:
NSString *decodedString = [msg.content stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];