首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有变音的Objective C- char to NSString

带有变音的Objective C- char to NSString
EN

Stack Overflow用户
提问于 2012-02-10 18:24:46
回答 2查看 1.3K关注 0票数 4

我使用的是libical,这是一个解析icalendar格式(RFC2445)的库。

问题是,在位置字段中可能有一些德语元音。

现在libical为每个值返回一个常量char *,如下所示:

代码语言:javascript
复制
"K\303\203\302\274nstlerhaus in M\303\203\302\274nchen"  

我尝试使用以下命令将其转换为NSString:

代码语言:javascript
复制
[NSString stringWithCString:icalvalue_as_ical_string_r(value) encoding:NSUTF8StringEncoding];

但我得到的是:

代码语言:javascript
复制
Künstlerhaus in München

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-10 18:59:42

看起来你的字符串被双重UTF-8编码了,因为“K?nstlerhaus in M?nchen”实际上是UTF-8,如果你再次使用UTF-8解码,你应该得到正确的字符串。

但是要记住,你不应该对这个结果感到满意。在某些组合中,不能通过执行双UTF-8解码来简单地解码双UTF-8编码的字符串。有些编码组合是不可逆的。因此,在您的情况下,我建议您首先找出字符串被双重UTF-8编码的原因,可能是ical以错误的编码存储在硬盘上,或者libical使用了错误的字符集来访问它,或者如果您从服务器获取ical,可能那里的字符集对于text/ical是错误的,等等……

票数 6
EN

Stack Overflow用户

发布于 2012-02-10 18:53:17

C字符串似乎不是用UTF-8编码的,因为每个字符有四个字节。例如,在UTF8中将ü编码为\xc3\xbc (或\195\188)。因此,当您收到输入时,它要么已经乱码,要么使用了其他编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9226242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档