我收到带有拉丁字母的char *
打印示例:M \ xe4da Primavesi
我正在尝试将其转换为NSString,最终结果应该是MädaPrimavesi。
有人知道如何进行对话吗?
谢谢
最佳答案
您想要的编码是NSISOLatin1StringEncoding
:
NSString *latin = [NSString stringWithCString:"M\xe4da Primavesi" encoding:NSISOLatin1StringEncoding];
但是您会注意到这显示
MÚ Primavesi
。这是因为\x
是贪婪的,并且将"da"
解释为十六进制\xe4da
的一部分。您必须找到一种方法,将"\xe4"
部分与"da"
部分分开。这有效:
NSString *latin = [NSString stringWithCString:"M\xe4""da Primavesi" encoding:NSISOLatin1StringEncoding]; // prints Mäda Primavesi
我建议您改用utf-8字符串
"M\u00e4da Primavesi"
对拉丁C字符串进行编码,然后用NSUTF8StringEncoding
对其进行解码。关于ios - objective-c unicode char *转换为NSString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21848010/