c++ - 'BOM' 字符在文件开头或文件结尾的位置是什么?

标签 c++ utf-8 byte-order-mark

我想知道“BOM”字符在文件中的位置以及如何查看该字符。如果有人解释什么是 BOM 字符,将会很有帮助。 我想做的是,我有 ANSI 文件,我想将其转换为 UTF-8 编码\ 我该怎么做?

提前致谢

最佳答案

" I want to know the location of 'BOM' character in the file

BOM 位于文件的开头。

你为什么不在谷歌上搜索它或在维基百科中查找它。

" how can i view this character

通常情况下不能,但在某些情况下会显示。

" It will be helpful if somebody explain what is BOM character

BOM 最初是一个字节顺序标记,用于方便确定 UTF-16 或 UTF-32 编码文本的字节顺序。在 Windows 中,它还用于识别 UTF-8 编码文件本身,特别是如果没有 BOM,Visual C++ 编译器将错误识别编码。不幸的是,关于 BOM 的维基百科文章偏向于 Unix 爱好者的观点,其中 UTF-8 文件应该与 Windows 中的常见要求不兼容1(这有助于考虑到 Microsoft 是创始成员) Unicode 联盟的成员,因此 Unicode 标准中没有任何内容与 Windows 中的约定相反)。

" I want to do is that i am having ANSI file and i want to convert it into UTF-8 encoding \ how can i do that

要准确转换,您需要知道文件使用的确切编码。请注意,“windows ansi”是一组可能的编码,其中给定 Windows 安装上的 windows ansi 是 GetACP API 函数报告的代码页。考虑到编码的知识,您可以使用 Windows API 的 MultiByteToWideChar、C 库的 mbcstowcs 或 C++11 C++ 库的 codecvt >.


1) 旧版的 g++ 编译器因 UTF-8 源代码中的 BOM 而被阻塞,这与需要 BOM 的 Visual C++ 相反。令人高兴的是,现代版本的 g++ 接受了 BOM。正如标准所要求的那样。

关于c++ - 'BOM' 字符在文件开头或文件结尾的位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037750/

相关文章:

c++ - Ada 中的 placement new 相当于什么?

c++ - 字符集如何存储在字符串和 wstrings 中?

java - 俄语字符显示为 ???在 Spring-MVC 中

python - 如何确定 CSV 文件的编码?

Git 忽略 BOM(防止 git diff 显示字节顺序标记更改)

c++ - ICU 字节顺序标记 (BOM)

c++ - 扭曲双向链表

c++ - for_each 实现与 tolower

c++ - 在 C++ 中是否不再需要清理代码?

php - MySQL 到 JSON : Issue with encoding of German special characters in UTF-8