2

我使用 FTP 列出服务器上的文件属性。我请求文件名并将它们放入一个数组中。我像这样直接打印数组:

NSLog(@"%@", array); 

我得到的是这样的:

\U6587\U4ef6\U540d\Uff1afilename.txt
\U6587\U4ef6\U540d\Uff1afilename1.txt
......

当我想打印 Unicode "\U6587\U4ef6\U540d\Uff1a" 以查看它是什么时,我得到了编译错误:“不完整的通用字符名称”。

但是,如果我打印名称而不是整个数组,我可以在没有 Unicode 的情况下正确获取名称。但我需要对数组中的名称做一些事情。我想知道为什么 Unicode 存在,并且只删除 Unicode 然后用真实文件名做一些事情是否合适?

4

2 回答 2

4

在 C99 中,因此也可能是 Objective C,有两种 Unicode 转义:

\uXXXX
\UXXXXXXXX

小写u后跟 4 个十六进制数字;大写U后跟 8 个十六进制数字(其中,前两个应该是 0 才能成为有效的 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;
}

并得到这个输出:

  • 文件名:

我无法回答为什么会有这些字符,但结尾处类似冒号的字符表明该站点可能在实际文件名之前带有某种标签(类似于“文件:”)。

于 2012-05-14T02:47:23.887 回答
0

除了乔纳森所说的之外,您可能必须使用stringWithUTF8String:,但我同意错误在于大写U而不是u.

于 2012-05-14T02:58:06.657 回答