[英]Objective c unicode char* to NSString
我收到帶有拉丁字母打印示例的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\äda Primavesi"
對拉丁C字符串進行編碼,然后使用NSUTF8StringEncoding
對其進行解碼。
嘗試如下所示的NSString
API stringWithCString:encoding:
`[NSString stringWithCString:cString encoding:NSUTF8StringEncoding];`
char *latinChars = "M\xe4da Primavesi";
NSString *chatStr = [NSString stringWithCString:latinChars encoding:NSASCIIStringEncoding];
NSLog(@"chatStr:%@", chatStr);
其結果是:MÚPrimavesi
我嘗試一下:
char *latinChars = "M\xe4 da Primavesi"; //add an blank for 'da'
NSString *chatStr = [NSString stringWithCString:latinChars encoding:NSASCIIStringEncoding];
NSLog(@"chatStr:%@", chatStr);
其結果是:Mäda Primavesi
看起來像latin1。
[NSString stringWithCString:cString encoding: NSISOLatin1StringEncoding]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.