我如何使用ICU的库打印文件?

时间:2016-08-12 08:46:02

标签: c window icu

我试图打开,阅读和打印包含chiness's char的文件。

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系统上编码 请......非常重要!

1 个答案:

答案 0 :(得分: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);