Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果输出为平台端,ICONV写入BOM时出现问题_C++_C_Unicode_Iconv - Fatal编程技术网

C++ 如果输出为平台端,ICONV写入BOM时出现问题

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

选择UTF-32时,对于平台相关的endian,libiconv 正确转换,但在输出前加上0xfeff BOM前缀 流动这会引起一些麻烦

选择UCS-4时,不会写入BOM,但会在我的系统上写入 转换为“big-endian”,这恰好不是 我的系统的持久性

有没有关于如何转换为UTF-32/UCS-4的建议 具有与平台相关的Endianness,而不具有
手动删除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会导致问题。

谢谢,我在文档中没有发现!