jmeter读取CSV文件中文乱码的解决方案
原因分析
CSV文件出现中文乱码通常是因为文件编码与JMeter读取编码不一致。常见场景:
- 文件保存为
GBK
/GB2312
编码,但JMeter以UTF-8
读取。 - 文件包含BOM头(如Windows记事本保存的UTF-8),但JMeter未正确处理。
- 脚本读取文件时未显式指定编码。
CSV文件中文乱码的解决方案
原因分析
CSV文件出现中文乱码通常是因为文件编码与JMeter读取编码不一致。常见场景:
- 文件保存为
GBK
/GB2312
编码,但JMeter以UTF-8
读取。 - 文件包含BOM头(如Windows记事本保存的UTF-8),但JMeter未正确处理。
- 脚本读取文件时未显式指定编码。
解决方案(根据场景选择)
方法一:统一文件编码为UTF-8(推荐)
-
用编辑器转换编码
使用Notepad++或VS Code将CSV文件另存为 UTF-8无BOM 格式:- Notepad++操作:
编码
→转为UTF-8无BOM编码
→ 保存。 - VS Code操作:
右下角点击编码(如UTF-8
)→通过编码保存
→ 选择UTF-8
。
- Notepad++操作:
-
配置JMeter CSV Data Set Config
在JMeter的CSV配置中,添加以下参数:
Filename: path/to/your/file.csv
Encoding: UTF-8
方法二:在JSR223脚本中强制指定编码
如果使用Groovy脚本读取文件,需显式声明编码:
// 读取文件时指定UTF-8编码
def fileContent = new File("path/to/file.csv").getText("UTF-8")// 处理内容(示例)
def lines = fileContent.split("\n")
lines.each { line ->// 解析逻辑...
}
方法三:处理带BOM头的UTF-8文件
若文件包含BOM头(如EF BB BF
),需在读取时去除:
def fileContent = new File("path/to/file.csv").getText("UTF-8")
if (fileContent.startsWith("\uFEFF")) {fileContent = fileContent.substring(1) // 去除BOM头
}