2012-05-14 22 views
2

私はFTPを使用してサーバーのファイル属性を一覧表示します。私はファイルの名前を要求し、配列に入れます。私はこのように直接配列を印刷:私が得たことは、このようなものですサーバから要求されたファイル名がUnicode文字で始まるのはなぜですか?

NSLog(@"%@", array); 

:私はUnicodeを印刷したい

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

"\ U6587 \ U4ef6 \ U540d Uff1a \" それ何を参照するには"私はコンパイルエラーを持っています:"不完全な普遍的な文字の名前 "。

しかし、配列全体ではなく名前を表示すると、Unicodeを使わずに名前を正しく取得できます。しかし、私は配列の名前で何かする必要があります。私はなぜUnicodeがあるのか​​知りたいのですが、実際のファイル名で何かをするためにUnicodeを削除するだけでよいのですか?従って

+1

いくつかのコレクションクラスでは、説明を生成するときに、「シンプル」の定義では「シンプル」でない文字列にクォートやエスケープを追加します。純粋なASCII、少なくともプラス、しばしばラテン文字と数字以外の文字を持つ。 **これは、文字列自体にエスケープシーケンスや引用符が含まれていることを意味しません。コレクションがその内容を記述文字列にどのようにフォーマットしたかだけです。基本的には無視して文字列を使用してください。 –

答えて

4
C99において

、おそらく目的も、ユニコードエスケープ2があるC:

\uXXXX 
\UXXXXXXXX 

u 4進数字が続く小文字。 Uの後には8桁の16進数が続きます(そのうち、最初の2文字は有効なUnicodeになるように0にする必要があります.3番目の文字は0または1で、最大UnicodeコードポイントはU + 10FFFF)。

私はあなたが大文字のUを小文字のuのものに置き換えた場合、コンパイルするコードを取得するべきだと考えています。GCC 4.7.0(自宅)でコンパイルすると、Mac OS 10.7.4システムでコンパイルできます。構築された)、私はこのコードをコンパイル:

#include <stdio.h> 

int main(void) 
{ 
    char array[] = "\u6587\u4ef6\u540d\uff1a"; 
    puts(array); 
    return 0; 
} 

を、この出力ました:

  • 文件名:

文字があるなぜ私が答えることはできませんが、最後にコロンのような文字がサイトはいくつかの種類のタグで実際のファイル名の前にするかもしれないことを示唆しています( 'file:'に類似しています)。

+0

完全性のために、 'ファイル名:'は 'Filename:'を意味します。 –

+1

ありがとう、@MichaelRobinson。時々、私は幸運になる!最初の3文字はCJK統一イデオグラフィック(U + 4E00..U + 9FCF)のもので、最後はフルワイドコロンです。 –

+0

問題ありません!中国語の全角句読点を使用すると、ひどいIMHOになります。 ' - /() - ; '':' –

0

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

関連する問題