C++ 如果输出为平台端,ICONV写入BOM时出现问题
选择UTF-32时,对于平台相关的endian,libiconv 正确转换,但在输出前加上0xfeff BOM前缀 流动这会引起一些麻烦 选择UCS-4时,不会写入BOM,但会在我的系统上写入 转换为“big-endian”,这恰好不是 我的系统的持久性 有没有关于如何转换为UTF-32/UCS-4的建议 具有与平台相关的Endianness,而不具有C++ 如果输出为平台端,ICONV写入BOM时出现问题,c++,c,unicode,iconv,C++,C,Unicode,Iconv,选择UTF-32时,对于平台相关的endian,libiconv 正确转换,但在输出前加上0xfeff BOM前缀 流动这会引起一些麻烦 选择UCS-4时,不会写入BOM,但会在我的系统上写入 转换为“big-endian”,这恰好不是 我的系统的持久性 有没有关于如何转换为UTF-32/UCS-4的建议 具有与平台相关的Endianness,而不具有 手动删除BOM表?如果不指定字节顺序,默认值始终为big-endian。要使用当前平台的字节顺序,请使用特殊的UCS-4-INTERNAL(或U
手动删除BOM表?如果不指定字节顺序,默认值始终为big-endian。要使用当前平台的字节顺序,请使用特殊的
UCS-4-INTERNAL
(或UCS-2-INTERNAL
)编码。iconv(glibc实现和GNU libiconv实现)支持指定固定端号的编码名称:
- UTF-32LE=UCS-4LE:UCS-4,小端风味,无物料清单
- UTF-32BE=UCS-4BE:大端风味的UCS-4,无物料清单
- UTF-16LE:little endian风味的UTF-16,无BOM
- UTF-16BE:大端风味UTF-16,无BOM
- wchar_t(UCS-4-INTERNAL的别名):具有平台端部和对齐限制的UCS-4
请注意,最好不要将这些编码中的字符串传输到其他机器上,否则缺少BOM会导致问题。谢谢,我在文档中没有发现!