在 C 中处理多字节(非 ASCII)字符

2023-12-12

我正在尝试做我自己的 wc(unix 过滤器)版本,但我遇到了非 ASCII 字符的问题。我对一个文本文件进行了十六进制转储,发现这些字符占用了多个字节。所以它们不适合炭化。有什么方法可以从文件中读取这些字符并像 C 中的单个字符一样处理它们(以便计算文件中的字符)? 我在谷歌上搜索了一下并发现了一些 wchar_t 类型,但没有任何简单的示例如何将它与文件一起使用。


我一直在谷歌上搜索了一下,发现了一些 wchar_t 类型,但没有任何简单的示例如何将它与文件一起使用。

好遇见。没有任何简单的示例,因为不幸的是,没有适当的字符集支持并不简单.

旁白:在理想的世界中,每个人都会使用 UTF-8(一种内存高效、稳健且向后兼容 ASCII 的 Unicode 编码),标准 C 库将包含 UTF-8 编码解码支持,以及答案这个问题(以及一般的文本处理)将是简单明了的。

问题的答案“C 语言中最好的 unicode 库是什么?“ 是使用ICU图书馆。您可能想看看ustdio.h,因为它有一个u_fgetc函数,并且向您的程序添加 Unicode 支持可能只需要键入u_几次。

另外,如果您能抽出几分钟时间进行一些轻松的阅读,您可能想阅读每个软件开发人员绝对必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!)来自乔尔安软件。

我个人从未使用过 ICU,但从现在起我可能会使用 :-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C 中处理多字节(非 ASCII)字符 的相关文章

随机推荐