2016-08-12 30 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()预期在可变参数流中使用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);