友情提示: 本文章干货太干,收藏价值极高

不能说百分百会遇到这个问题,至少99.9%会遇到!
在这里插入图片描述

遇到上面这个情况你是怎么解决的呢?是不是也根据出现的问题直接百度或者deepseek了?

我想举个例子:天气预报说今天天气会很热,大家注意防暑。以下是几种人的思路:

  • 张三:衣服穿少一些,涂好防晒,戴好帽子和遮阳伞,拿好小风扇降温
  • 李四:正常出门,热了就脱一件,不行再吃块雪糕,喝点冰水,冷水洗洗脸和胳膊
  • 王五:正常出门,什么也不管,继续该做什么事就做什么事
  • 马六:这天出什么门啊,不出门了!

解析(如有异议,建议评论区留言,反正我不回复):
张三:属于防范意识比较强的人,所以他大概率不会因为天气热而导致中暑或者晒伤
李四:属于被动接受的人,所以他总是遇到问题。能想办法去解决问题,但是存在一定中暑概率
王五:属于我命油我不油天的人,他总能遇到问题,但是不会去解决问题而选择搁置,时间长了极大概率中暑
马六:属于爱逃避风险的人,虽然躲避了炎热天气,可能也丢失了一天的工资

主动出击杜绝问题发生才是上上策
生活中李四比较多,毕竟大家都是打工人,哪有时间去准备那么充分呢?其实张三以前就是李四,只不过是他通过不断地积累,知道了应该怎么做。
说的有点多了,回到问题主题:
上图所示问题大概意思是,无法正常读取到文件,或者读取文件的内容为空。
因为是csv文件,无法通过我们桌面右键新建一个该类型文件。所以就有了曲线救国的方法:

  1. 创建一个Excel(xsl)文件,把自己要参数化的部分按照要求填入,然后保存为CSV文件
  2. 创建一个txt文件,同样按要求填入后保存,修改文件类型为CSV
  3. 使用notepad++,按要求填入后保存,然后转化为无BOM格式文件
  4. 使用vscode,按要求填入后保存

以上几种方式都是无代码的方式,基本上是大家电脑上都会有的,保存后建议大家再次打开查看下是否乱码,如果格式正确的话恭喜你!
通过以上几种方式创建后,大家大概率往下操作不会再遇到,如果再遇到的话,排查思路:

  • 检查文件内是否有多余或者少写的key或者value,确保格式正确
  • 检查jmeter的CSV配置项(CSV Data Set Config)内配置是否正确,这一步也是大家经常出问题的点,配置可参考下图,多个值第三项用英文逗号隔开,单个值时也建议保留分隔符(默认英文逗号),是否允许带引号建议选择True

在这里插入图片描述


以下是deepseek查找的一些详细步骤,大家按需使用:

要创建一个 无 BOM(Byte Order Mark)的 UTF-8 编码 CSV 文件,可以按照以下方法操作,确保 JMeter
或其他工具读取时不会出现乱码问题。

📌 方法 1:使用 Notepad++(推荐)

步骤:

  1. 打开 Notepad++(官网下载)。

  2. 输入 CSV 内容(示例):

    username,password
    user1,123456
    张三,abc测试
    
  3. 转码为 UTF-8 无 BOM:

    • 点击菜单栏 编码 → 转为 UTF-8 无 BOM。
    • 确保状态栏显示 UTF-8 无 BOM。
  4. 保存文件:

    • 点击 文件 → 另存为。
    • 文件名输入 data.csv,保存类型选 所有文件 (*.*)。
    • 编码选项 确认是 UTF-8 无 BOM。

📌 方法 2:使用 VS Code

步骤:

  1. 打开 VS Code(官网下载)。

  2. 新建文件,输入 CSV 内容:

    id,name
    1,测试用户
    2,John Doe
    
  3. 设置编码:

    • 点击右下角编码按钮(如 UTF-8)。
    • 选择 “通过编码保存” → “UTF-8”(VS Code 默认无 BOM)。
  4. 保存文件:

    • 文件扩展名手动输入 .csv(如 data.csv)。

📌 方法 3:使用 Excel(需额外注意)

Excel 默认保存的 CSV 是 ANSI/GBK 编码,需通过以下步骤转换为 UTF-8 无 BOM:

  1. 用 Excel 编辑数据,保存为 CSV (逗号分隔)(*.csv)。
  2. 用 Notepad++ 或 VS Code 重新打开该文件,按上述方法转码为 UTF-8 无 BOM 后保存。

⚠️ 注意:Excel 直接另存为 CSV UTF-8 (逗号分隔)(*.csv) 会带 BOM,不推荐!

📌 方法 4:命令行生成(Linux/Mac)

echo -e "id,name\n1,测试用户\n2,John Doe" > data.csv
  • 默认生成的 CSV 是 UTF-8 无 BOM(可通过 file -I data.csv 验证)。

🔍 如何验证文件是否无 BOM?

方法 1:用 Notepad++ 查看

  • 打开文件后,右下角显示 UTF-8 无 BOM 即正确。
    ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fi.imgur.com%2FDEF789.png&pos_id=img-ki4TMOqf-1749111959416

方法 2:用 file 命令(Linux/Mac)

file -I data.csv

输出应为 charset=utf-8(无 BOM 会显示 utf-8,有 BOM 会显示 utf-8 with BOM)。

方法 3:用 Hex 编辑器查看

  • 用 HxD(Windows)或 hexdump(Linux/Mac)检查文件开头:
    • 无 BOM:开头直接是文本(如 u,s,e,r,n,a,m,e)。
    • 有 BOM:开头会有 EF BB BF 字节。

🚨 常见问题

Q1:为什么必须用“无 BOM”的 UTF-8?

  • BOM 会导致部分工具(如 JMeter、Linux 脚本)错误解析文件开头,引发乱码或读取失败。

Q2:JMeter 读取 CSV 仍乱码?

  • 在 CSV Data Set Config 中显式设置:
    File Encoding: UTF-8
    
  • 确保 HTTP 请求头包含 Content-Type: ...; charset=utf-8。

Q3:如何在 Python 中生成无 BOM CSV?

import csv
with open("data.csv", "w", encoding="utf-8-sig") as f:  # 注意 utf-8-sig 会添加 BOM
    writer = csv.writer(f)
    writer.writerow(["username", "password"])
    writer.writerow(["张三", "test123"])
  • 如果要 无 BOM,改用 encoding="utf-8"。

🎯 总结

工具关键操作适用场景
Notepad++编码 → 转为 UTF-8 无 BOM → 保存Windows 用户首选
VS Code右下角选择 UTF-8 → 保存跨平台通用
Excel先存 CSV,再用文本编辑器转码需兼容 Excel 的场景
命令行echo 或 printf 生成Linux/Mac 快速生成

按上述方法操作后,JMeter 通过 CSV Data Set Config 读取时即可避免乱码问题!

更多推荐