首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果输出为平台端,则使用ICONV编写BOM

如果输出为平台端,则使用ICONV编写BOM
EN

Stack Overflow用户
提问于 2015-08-05 04:52:14
回答 2查看 254关注 0票数 1

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

当选择UCS-4时,没有BOM被写入,但是在我的系统上它转换为‘大端’,这恰好不是我的系统的特性。

是否有任何建议,如何转换为UTF-32/UCS-4与平台相关的恩典,而不需要手动删除BOM?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-20 09:36:30

iconv ( glibc实现和GNU libiconv实现)都支持指定固定endianness的编码名称:

  • UTF-32 4LE= UCS-4 4LE:UCS-4在小端风味,没有BOM
  • UTF-32 4BE= UCS-4 4BE:UCS-4具有大端风味,不含BOM
  • UTF-16 in :UTF-16在小端风味,没有BOM。
  • UTF-16BE : UTF-16有大端风味,不含BOM。
  • wchar_t ( UCS-4内部的别名):具有平台特性和对齐限制的UCS-4

请注意,这些编码中的字符串最好不要传输到其他机器,否则缺乏BOM将导致问题。

票数 0
EN

Stack Overflow用户

发布于 2015-08-05 05:38:18

如果不指定字节顺序,则默认值始终是大端点。若要使用当前平台的字节顺序,请使用特殊的UCS-4-INTERNAL (或UCS-2-INTERNAL)编码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31823682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档