簡體   English   中英

目標c unicode char *到NSString

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM