Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone中的NSString、C字符串、路径名和编码_Iphone_Objective C_Character Encoding_Libxml2 - Fatal编程技术网

iPhone中的NSString、C字符串、路径名和编码

iPhone中的NSString、C字符串、路径名和编码,iphone,objective-c,character-encoding,libxml2,Iphone,Objective C,Character Encoding,Libxml2,我正在iPhone应用程序中使用libxml2。我有一个保存XML文件路径名的NSString。路径名可能包括非ASCII字符。我想获取要传递到xmlReadFile()的NSString的C字符串表示形式。似乎CStringUsingEncode为我提供了我所寻求的表示。我不清楚使用哪种编码 我想知道iPhone操作系统中是否有一个“默认”编码,我可以在这里使用,并确保可以往返非ASCII路径名。使用NSString。如果字符串包含文件系统编码中不可表示的字符,则此方法将引发异常 要转换回,请

我正在iPhone应用程序中使用libxml2。我有一个保存XML文件路径名的
NSString
。路径名可能包括非ASCII字符。我想获取要传递到
xmlReadFile()
NSString
的C字符串表示形式。似乎CStringUsingEncode为我提供了我所寻求的表示。我不清楚使用哪种编码

我想知道iPhone操作系统中是否有一个“默认”编码,我可以在这里使用,并确保可以往返非ASCII路径名。

使用NSString。如果字符串包含文件系统编码中不可表示的字符,则此方法将引发异常

要转换回,请使用NSFileManager的

使用NSString的。如果字符串包含文件系统编码中不可表示的字符,则此方法将引发异常


要转换回,请使用NSFileManager的

我注意到您链接到的文档中说,“此方法通过将抽象路径和扩展分隔符('/'和'.'分别替换为操作系统的等效字符来操作。”我注意到它没有提到非ASCII字符。@iter:那可能是因为文件系统通常不为非ASCII字符定义特殊含义,所以它们在这方面没有得到任何特殊处理。你以为它会说些什么呢?在我的Mac电脑上,我只是用一个包含
テストファイル.txt,并在调用
fopen
时使用
fileSystemRepresentation
的结果进行了处理。为什么你对这种方法持怀疑态度?我不怀疑,我甚至试着学习iPhone操作系统的区域设置处理约定。在其他操作系统上,我担心的是,我的程序使用一种约定将字符编码为字节(比如UTF8),而另一个程序使用另一种约定(比如Shift JIS),而我在另一个程序中编写的内容看起来像胡言乱语。我所熟悉的大多数操作系统都在环境变量或等效变量中使用“系统”编码,因此所有程序都可以使用相同的编码。我想这在电话上没有那么重要,因为只有我的程序才能访问我的文件,我只需要与我自己保持一致。我注意到,您链接到的文档中说,“此方法通过替换抽象路径和扩展分隔符(“/”和“.”)来操作。”“我注意到它没有提到非ASCII字符。@iter:那可能是因为文件系统通常不为非ASCII字符定义特殊含义,所以它们在这方面没有得到任何特殊处理。你以为它会说些什么呢?在我的Mac电脑上,我只是用一个包含
テストファイル.txt,并在调用
fopen
时使用
fileSystemRepresentation
的结果进行了处理。为什么你对这种方法持怀疑态度?我不怀疑,我甚至试着学习iPhone操作系统的区域设置处理约定。在其他操作系统上,我担心的是,我的程序使用一种约定将字符编码为字节(比如UTF8),而另一个程序使用另一种约定(比如Shift JIS),而我在另一个程序中编写的内容看起来像胡言乱语。我所熟悉的大多数操作系统都在环境变量或等效变量中使用“系统”编码,因此所有程序都可以使用相同的编码。我想这在电话上并不重要,因为只有我的程序才能访问我的文件,我只需要与自己保持一致。