我收到带有拉丁字母的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/

10-09 21:51