我使用 FTP 列出服务器上的文件属性。我请求文件名并将它们放入一个数组中。我像这样直接打印数组:
NSLog(@"%@", array);
我得到的是这样的:
\U6587\U4ef6\U540d\Uff1afilename.txt
\U6587\U4ef6\U540d\Uff1afilename1.txt
......
当我想打印 Unicode“\U6587\U4ef6\U540d\Uff1a”看看它是什么时,我收到编译错误:“不完整的通用字符名称”。
但是,如果我打印名称而不是整个数组,则无需 Unicode 即可正确获取名称。但我需要对数组中的名称做一些事情。我想知道为什么存在 Unicode,以及删除 Unicode 然后对真实文件名执行某些操作是否正确?
最佳答案
在 C99 中,因此大概 Objective C 中也有两种 Unicode 转义:
\uXXXX
\UXXXXXXXX
小写的u
后跟4个十六进制数字;大写的 U
后跟 8 个十六进制数字(其中,前两个应该是零才能成为有效的 Unicode(第三个应该是 0 或 1;最大 Unicode 代码点是 U+ 10FFFF)。
我相信,如果您将大写的 U
替换为小写的 u
,您应该可以编译代码。
在我的 Mac OS 10.7.4 系统上,使用 GCC 4.7.0(自制)进行编译,我编译了以下代码:
#include <stdio.h>
int main(void)
{
char array[] = "\u6587\u4ef6\u540d\uff1a";
puts(array);
return 0;
}
并得到这个输出:
- 文件名:
我无法回答为什么会有这些字符,但末尾的类似冒号的字符表明该站点可能在实际文件名之前带有某种标记(类似于“文件:”)。
关于iphone - 为什么从服务器请求的文件名以 Unicode 字符开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10576919/