簡體   English   中英

Objective C - 帶有umlaute到NSString的char

[英]Objective C - char with umlaute to NSString

我使用的是libical,它是一個解析icalendar格式的庫(RFC 2445)。
問題是,在位置字段中可能存在一些德語變音符號。
現在libical為每個值返回一個const char *,如:

"K\303\203\302\274nstlerhaus in M\303\203\302\274nchen"  

我嘗試將其轉換為NSString:

[NSString stringWithCString:icalvalue_as_ical_string_r(value) encoding:NSUTF8StringEncoding];

但我得到的是:

Künstlerhaus in München

有什么建議? 我將不勝感激任何幫助!

好像你的字符串得到了雙重UTF-8編碼,因為“München中的Künstlerhaus”實際上 UTF-8,如果再次使用UTF-8解碼,你應該得到正確的字符串。

請記住,你不應該對這個結果感到滿意。 有些組合不能通過雙UTF-8解碼簡單地解碼雙UTF-8編碼的字符串。 某些編碼組合是不可逆的。 所以在你的情況下,我建議你找出為什么字符串首先得到雙重UTF-8編碼,可能是在硬盤上以錯誤的編碼存儲,或者libical使用錯誤的字符集來訪問它,或者如果你從服務器獲得ical,或許charset有錯誤的文本/ ical等等...

C字符串似乎不是以UTF-8編碼的,因為每個字符有四個字節。 例如, ü將被編碼為UTF-8中的\\xc3\\xbc (或\\195\\188 )。 因此,當您收到輸入或使用其他編碼時輸入已經是亂碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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