我正在尝试编写一个从文件中读取字符的控制台程序。 我希望它能够从 Unicode 文件和 ANSI 文件中读取。
我该如何解决这个问题?我是否需要以编程方式区分文件类型并协调阅读?或者我能否以某种方式使用 Windows API 数据类型,如 TCHAR 和类似的东西。
从文件中读取的唯一区别是,在 Unicode 中,我必须为一个字符读取 2 个字节,而在 ASNSI 中,我必须读取它的 1 个字节?
我对这个 Windows API 有点迷茫。 会很感激任何帮助 谢谢
最佳答案
您可以尝试在缓冲区中以二进制模式读取文件的第一个 block (1 KB 应该足够),然后使用 IsTextUnicode
确定它是否可能是某种 Unicode 变体的函数;注意这个函数,除非它找到一些“强有力”的证据证明它是 Unicode 文本(例如 BOM),否则它会从根本上对缓冲区执行统计分析以确定“它看起来像”,因此它可能会给出错误的结果;此函数失败的一个例子是(不)著名的“Bush hid the facts”错误。
不过,您仍然可以使用其标志设置完成了多少猜测。
请注意,如果您的应用程序并不真正操作/显示文本,您甚至可能不需要确定它是 ANSI 还是 Unicode,而只需让它与编码无关即可。
关于c - 使用 Windows API 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5275212/