0

C++を使用してMacOSXで特殊文字のファイル名を使用してファイルを作成すると、問題が発生します。

これは私のアプリの印刷です:
ファイル名はソケットを介して別の実行可能ファイルから受信されます。(最も厄介なのは、ターミナルでファイル名をまったく印刷できなかったことです。疑問符のみが表示されます。ただし、ファイル名を別のファイルのコンテンツに書き込むと、正確な文字が表示されます。)

私のアプリの印刷:

######
File Name before decoding : /Users/zeus/workspace/Unicodes/files/%D4%D3%C2%F3_1.txt
File Name after decoding :  /Users/zeus/workspace/Unicodes/files/????_1.txt
File Opened and Written #####

アプリが完成した後、ファイルをチェックすると、ファイル名に%charsが表示されます。そんなことがあるものか ..?

4

1 に答える 1

2

私の推測では、文字列を有効なUTF-8としてエンコードする必要があります。0xD4は有効なUTF-8文字ではありません。むしろ、の正しいUTF-8エンコーディングはÔです0xC3 0x94(2バイトかかります)。実際のコードを見ないと断言できませんが、これが私の勘です。より確実な答えには、実際のコードが必要になります。

URLがLatin-1(ISO / IEC 8859-1)文字セットを使用してエスケープ文字をエンコードしているようです。この質問では、ISO8859-1からUTF-8に変換する方法について説明します。ウィキペディアには、UTF-8のエンコード方法に関する優れた記事があります

于 2013-01-07T17:32:38.510 に答える