我正在尝试使用以下调用将NSString
转换为C-String`:
NSString* path = ...
const char* str = [path cStringUsingEncoding: NSUTF16StringEncoding];
path
包含文件路径。但是,我得到str只是“/”。当我改用这个电话时:
const char* str = [path UTF8String];
返回的str
很好,即我将所需的路径作为c-string。但是,我需要确保转换在所有情况下都能正常工作,而不管路径中使用的类型编码,即我想要处理unicode字符。为此,我需要使用初始调用。
我犯了什么错误?
答案 0 :(得分:3)
这是因为您选择的编码。 UTF-16将返回16位字符,你期望8位字符(即UTF-8)。
因此,如果路径以/
开头,则会返回0x2F00
(假设采用小端编码),00
序列将显示字符串结尾
答案 1 :(得分:0)
你应该尝试使用UTF8编码这个'\'你得到的将是第一个NSString ...在c中每个char占用1个字节(8位)但UTF16使字符长2个字节..所以发生错误< / p>