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