Objective C - 带有umlaute到NSString的char

Ale*_*der 4 cocoa-touch objective-c diacritics ios libical

我使用的是libical,它是一个解析icalendar格式的库(RFC 2445).
问题是,在位置字段中可能存在一些德语变音符号.
现在libical为每个值返回一个const char*,如:

"K\303\203\302\274nstlerhaus in M\303\203\302\274nchen"  
Run Code Online (Sandbox Code Playgroud)

我尝试将其转换为NSString:

[NSString stringWithCString:icalvalue_as_ical_string_r(value) encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

Künstlerhaus in München
Run Code Online (Sandbox Code Playgroud)

有什么建议?我将不胜感激任何帮助!

Tho*_*ana 6

好像你的字符串得到了双重UTF-8编码,因为"München中的Künstlerhaus"实际上 UTF-8,如果再次使用UTF-8解码,你应该得到正确的字符串.

请记住,你不应该对这个结果感到满意.有些组合不能通过双UTF-8解码简单地解码双UTF-8编码的字符串.某些编码组合是不可逆的.所以在你的情况下,我建议你找出为什么字符串首先得到双重UTF-8编码,可能是在硬盘上以错误的编码存储,或者libical使用错误的字符集来访问它,或者如果你从服务器获得ical,或许charset有错误的文本/ ical等等...