前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个UTF-8 BOM的坑

一个UTF-8 BOM的坑

作者头像
用户5521279
发布2019-06-03 17:57:13
1.7K0
发布2019-06-03 17:57:13
举报
文章被收录于专栏:搜狗测试

小编前两天在用jmeter测试,使用CSV Data Set Config设置批量参数时,发现源数据文件的第一条数据总是读取失败。一通研究,最后发现原来是UTF-8 BOM惹的祸。

什么是BOM?

BOM——Byte Order Mark,就是字节序标记,是为UTF-16和UTF-32 准备的

  • 在UCS 编码中有一个叫做”ZEROWIDTH NO-BREAK SPACE“的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。
  • UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE“。
  • 如果接收者收到FEFF,就表明这个字节流是大字节序的;如果收到FFFE,就表明这个字节流是小字节序的。因此字符”ZERO WIDTH NO-BREAK SPACE“又被称作BOM。

BOM的作用:

  • UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE“的UTF-8编码是EF BB BF。所以如果接收者收到以EFBB BF开头的字节流,就知道这是UTF-8编码了。

小编遇到的问题的原因:

  • 微软会在UTF-8文件中放置BOM,比如新建一个txt文档,输入中文,然后以UTF-8的格式进行保存,会自动带上BOM。(带BOM的UTF-8文件的开头会有U+FEFF,所以新建的空txt文件会有3字节的大小)
  • 使用jmeter的OS ProcessSampler,通过CSV Data Set Config批量传参时,源数据文件保存时默认带上了U+FEFF的文件头,导致第一行的数据无法识别。

解决办法:

  • 通过notepad++,将编码从UTF-8 BOM改成UTF-8然后保存就行了。

欢迎添加我们的搜狗测试微信号,与我们一起聊聊测试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档