目标C-字符加元音变音符到NSString



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

"K303203302274nstlerhaus in M303203302274nchen"  

我试着用把它转换成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编码,可能是ical以错误的编码存储在硬盘上,或者libical使用错误的字符集来访问它,或者如果您从服务器获取ical,可能是text/ical等的字符集错误…

C字符串似乎不是用UTF-8编码的,因为每个字符有四个字节。例如,ü将以UTF-8编码为xc3xbc(或195188)。因此,当你收到输入时,它要么已经被打乱了,要么使用了其他编码。

相关内容

  • 没有找到相关文章

最新更新