2016-08-12 5 views
0

私は、chinessのcharを含むファイルを開いて、読み込み、印刷しようとしました。ICUのライブラリを使ってファイルを印刷する方法は?

UChar tab[50]; 
UFILE *file; 

if ((file = u_fopen("test.txt", "r", uloc_getDefault(), "UTF-16BE")) == NULL) 
    return (fprintf(stderr, "error: fail top open test.txt")); 
u_fgets(tab, 100, file); 
u_printf("%s\n", tab); 
u_fclose(file); 
return (0); 

出力では、私は: "]] ??"

私はこれを理解していません。 しかし、ロケールのシステムを中国語に設定しました。ファイルは "UTF-16BE"でエンコーディングされています PS:Windowsシステムでコーディングしています お願いします。とても重要です!

答えて

0

誤った書式指定子を使用している可能性があります。 %s書式指定子は、u_printf()に、variadic引数ストリームにCスタイルのchar*文字列が入るように指示します。引数としてUTF-16 UChar*文字列を渡したい場合は、%S指定子を使用する必要があります。 http://icu-project.org/apiref/icu4c/ustdio_8h.htmlの文書、具体的にはの書式設定と解析の仕様を参照してください。

ので

u_printf("%S\n", tab); 

u_printf("%s\n", tab); 

を変更

関連する問題