我尝试使用下面的调用转换NSString
到C-String`:错误转换的NSString C-字符串
NSString* path = ...
const char* str = [path cStringUsingEncoding: NSUTF16StringEncoding];
的path
包含的文件路径。但是,我越来越像“/”一样。当我使用这个调用来代替:
const char* str = [path UTF8String];
返回str
是好的,即我得到所需的路径为C-字符串。但是,我需要确保转换在任何情况下都能正常工作,而不管路径中使用的类型编码是什么,即我想处理unicode字符。为此,我需要使用最初的呼叫。
我犯了什么错误?
这是正确的。但是,如何确保代码处理所有的Unicode字符? – Sankalp
@Sankalp不知道你真的可以。每种类型的unicode编码(UTF-8,-16,-32)以及每种类型的endian(大小)都需要特殊处理。我认为你应该总是期望和处理UTF-8,而不是别的。如果你有外部编码的字符串(例如在文件中),那么在你的程序处理之前(即它们在加载时),这些字符串应该转换为UTF-8。 – trojanfoe
所以,我想,我只需要祈祷加载时路径正在被UTF-8编码! – Sankalp