如何将多字节UTF-8 std::string转换为NSString? 我有一组C++代码> STD::String < /C>,其中有多字节字符如 AA//COD>、 SU< 、 SA< 、 < 或 n。当我使用nsstringwithutf8string:将它们转换为NSString时,生成的字符串包含无法呈现的奇怪字符

如何将多字节UTF-8 std::string转换为NSString? 我有一组C++代码> STD::String < /C>,其中有多字节字符如 AA//COD>、 SU< 、 SA< 、 < 或 n。当我使用nsstringwithutf8string:将它们转换为NSString时,生成的字符串包含无法呈现的奇怪字符,c++,objective-c,ios,utf-8,cocos2d-iphone,C++,Objective C,Ios,Utf 8,Cocos2d Iphone,我还尝试了nsstringwithcstring:encoding,但没有找到任何有效的编码 我做错了什么 -- 我终于解决了。转换做得很好,但当调试器连接到手机时,字符没有显示在调试器上,但在连接到调试器时,字符显示良好。我在程序中遇到的问题是,文本呈现程序不支持某些特殊字符…您是试图直接传递std::string还是使用c_str()方法?这应该起作用: std::string s = "á ä ç ß ñ"; [NSString stringWithUTF8String: s.c_str(

我还尝试了
nsstringwithcstring:encoding
,但没有找到任何有效的编码

我做错了什么

--


我终于解决了。转换做得很好,但当调试器连接到手机时,字符没有显示在调试器上,但在连接到调试器时,字符显示良好。我在程序中遇到的问题是,文本呈现程序不支持某些特殊字符…

您是试图直接传递std::string还是使用c_str()方法?这应该起作用:

std::string s = "á ä ç ß ñ";
[NSString stringWithUTF8String: s.c_str()];

请粘贴该
std::string
内容的一个示例。在文本文件中,有一个类似这样的字符串:áäñ,它是编码为UTF8的“C3 A1 C3 A4 C3 B1”(请注意,每个字符需要两个字节)。如果我将其存储在str::string中,length()返回6,但如果我能在这种情况下
-stringWithUTF8String:
应该可以工作。你如何调用这个方法?我刚刚测试过:
char*testChar=“áäíäñ”;字符串testString=testChar;NSString*testNS=[nsstringwithutf8string:testChar];int testCharLen=strlen(testChar);int testStringLen=testString.length();int testNSLen=[testNS长度];int testNSLen2=[testNS2长度]
在模拟器中运行良好,但在手机中运行不好。