c - 如何在 C 中读取 UTF-8 文本文件?

标签 c utf-8

我有一个包含如下波斯语文本的文本文件:

(U+06CC,U+06A9)。

我想将这个文件读入一个字符串,然后将它存储在一个输出文件中。 我正在使用这段代码:

char *locale = setlocale(LC_ALL, "en_US.UTF-8");
FILE *in = fopen("test.txt", "r");
FILE *out = fopen("out.txt", "w");

wint_t c;
while ((c = fgetwc(in)) != WEOF) {
    putwchar(c);
    fprintf(out, "%c ", c);
}
fclose(in);
fclose(out);

这是行不通的。我期待的是:تست

(U+062A、U+0633、U+062A)。

最佳答案

这只是一个小错误;对于你需要的宽字符:

fprintf(out, "%lc ", c);
               -

fwprintf(out, L"%lc ", c);
 -            -  -

然后,它works for me . (该文件还包含以空格分隔的字符。)

关于c - 如何在 C 中读取 UTF-8 文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41649841/

相关文章:

c - 我自己的自定义书面单词搜索算法的奇怪问题

c - method(void * param) 在 C 中是什么意思?

regex - 检测 UTF-8 编码文本文件中的损坏字符

c - 减少 C 中的重复

c - 可预测地对单个函数进行性能分析

unicode - 将代码源从代码页转换为 UTF-8 的工具?

php - UTF8 中的制表符字符

php - MYSQL:为查询选择了不正确的排序规则

python - 将元组列表保存到文件时,“ascii”编解码器无法编码字符错误

c - wchar_t 和多字节函数是 ANSI C 的一部分吗?