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 にも、2 つの Unicode エスケープがあります。

\uXXXX
\UXXXXXXXX

小文字のu後に 4 つの 16 進数が続きます。大文字のU後に 8 桁の 16 進数が続きます (有効な Unicode であるためには、最初の 2 桁をゼロにする必要があります (3 番目は 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;
}

そして、この出力を得ました:

  • 文件名:

文字が存在する理由はわかりませんが、末尾のコロンのような文字は、サイトが実際のファイル名の前に何らかのタグ (「file:」に類似) を付けている可能性があることを示唆しています。

于 2012-05-14T02:47:23.887 に答える
0

ジョナサンが言ったことに加えて、 を使用する必要があるかもしれませんが、エラーはではなくstringWithUTF8String:大文字にあることに同意します。Uu

于 2012-05-14T02:58:06.657 に答える