JMeter通过BeanShell写入CSV文件中的中文乱码

news2025/2/8 17:38:22

在 JMeter 中通过 BeanShell 写入 CSV 文件时,如果出现中文乱码问题,通常是因为文件编码不匹配。默认情况下,FileWriter 使用的是系统默认编码(可能是 ISO-8859-1 或其他非 UTF-8 编码),而中文字符需要 UTF-8 编码才能正确显示。

以下是解决中文乱码问题的方法:


方法 1:使用 OutputStreamWriter 并指定 UTF-8 编码

FileWriter 替换为 OutputStreamWriter,并显式指定编码为 UTF-8

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;

// 定义 CSV 文件路径
String csvFilePath = "C:/path/to/your/output.csv";

// 定义要写入的数据(包含中文)
String dataToWrite = "列1,列2,列3\n值1,值2,值3";

// 使用 OutputStreamWriter 并指定 UTF-8 编码
OutputStreamWriter fileWriter = null;
try {
    fileWriter = new OutputStreamWriter(new FileOutputStream(csvFilePath, true), "UTF-8"); // true 表示追加模式
    fileWriter.write(dataToWrite + "\n");
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fileWriter != null) {
        try {
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法 2:添加 BOM(字节顺序标记)以确保 UTF-8 编码

某些工具(如 Excel)在打开 CSV 文件时,可能需要 BOM 来正确识别 UTF-8 编码。你可以在文件开头写入 BOM。

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;

// 定义 CSV 文件路径
String csvFilePath = "C:/path/to/your/output.csv";

// 定义要写入的数据(包含中文)
String dataToWrite = "列1,列2,列3\n值1,值2,值3";

// 使用 OutputStreamWriter 并指定 UTF-8 编码
OutputStreamWriter fileWriter = null;
try {
    fileWriter = new OutputStreamWriter(new FileOutputStream(csvFilePath, true), "UTF-8");

    // 如果是新文件,写入 BOM
    if (new File(csvFilePath).length() == 0) {
        fileWriter.write('\uFEFF'); // UTF-8 BOM
    }

    fileWriter.write(dataToWrite + "\n");
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fileWriter != null) {
        try {
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法 3:使用第三方库(如 OpenCSV)

如果你需要更复杂的 CSV 写入操作,可以使用第三方库(如 OpenCSV)。首先需要将 OpenCSV 的 JAR 文件添加到 JMeter 的 lib 目录中,然后使用以下脚本:

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

// 定义 CSV 文件路径
String csvFilePath = "C:/path/to/your/output.csv";

// 定义要写入的数据(包含中文)
String[] header = {"列1", "列2", "列3"};
String[] row = {"值1", "值2", "值3"};

// 使用 OpenCSV 写入 CSV 文件
CSVWriter csvWriter = null;
try {
    csvWriter = new CSVWriter(new OutputStreamWriter(new FileOutputStream(csvFilePath, true), "UTF-8"));

    // 如果是新文件,写入表头
    if (new File(csvFilePath).length() == 0) {
        csvWriter.writeNext(header);
    }

    // 写入数据行
    csvWriter.writeNext(row);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (csvWriter != null) {
        try {
            csvWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

方法 4:确保 JMeter 脚本本身的编码为 UTF-8

如果 BeanShell 脚本中直接包含中文字符,确保 JMeter 的脚本文件保存为 UTF-8 编码:

  1. 打开 JMeter 的 jmeter.properties 文件。
  2. 找到 sampleresult.default.encoding 属性,将其设置为 UTF-8
    sampleresult.default.encoding=UTF-8
    
  3. 保存并重启 JMeter。

总结

  • 推荐使用 方法 1方法 2,通过 OutputStreamWriter 指定 UTF-8 编码解决中文乱码问题。
  • 如果需要更复杂的 CSV 操作,可以使用 方法 3(OpenCSV)。
  • 确保 JMeter 脚本文件本身保存为 UTF-8 编码(方法 4)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2294883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

X Window System 架构概述

X Window System 架构概述 1. X Server 与 X Client ​ 这里引入一张维基百科的图,在Linux系统中,若用户需要图形化界面,则可以使用X Window System,其使用**Client-Server**架构,并通过网络传输相关信息。 ​ ​ X…

【ArcGIS Pro 简介1】

ArcGIS Pro 是由 Esri (Environmental Systems Research Institute)公司开发的下一代桌面地理信息系统(GIS)软件,是传统 ArcMap 的现代化替代产品。它结合了强大的空间分析能力、直观的用户界面和先进的三维可视化技术…

启明星辰发布MAF大模型应用防火墙产品,提升DeepSeek类企业用户安全

2月7日,启明星辰面向DeepSeek等企业级大模型业务服务者提供的安全防护产品——天清MAF(Model Application Firewall)大模型应用防火墙产品正式发布。 一个新赛道将被开启…… DeepSeek的低成本引爆赛道规模 随着DeepSeek成为当前最热的现象级…

小米AI眼镜官微上线,将与小米15 Ultra同台亮相,近屿智能用心培育 AI 人才

近日,小米眼镜官微已正式上线,认证主体为小米通讯技术有限公司。据悉,小米AI眼镜已获得入网许可,并计划提前至2月发布,与小米15 Ultra同台亮相。 此前,小米AI眼镜原定于2025年3月至4月发布。早在去年&#…

Mac下使用brew安装go 以及遇到的问题

首先按照网上找到的命令进行安装 brew install go 打开终端输入go version,查看安装的go版本 go version 配置环境变量 查看go的环境变量配置: go env 事实上安装好后的go已经可以使用了。 在home/go下新建src/hello目录,在该目录中新建…

在rtthread中,scons构建时,它是怎么知道是从rtconfig.h找宏定义,而不是从其他头文件找?

在rtthread源码中,每一个bsp芯片板级目录下都有一个 SConstruct scons构建脚本的入口, 在这里把rtthread tools/目录下的所有模块都添加到了系统路径中: 在tools下所有模块中,最重要的是building.py模块,在此脚本里面…

Unity游戏(Assault空对地打击)开发(7) 爆炸效果

效果 准备 首先请手搓一个敌军基地。 然后添加一个火焰特效插件或者自建。 爆炸脚本编写 新建一个脚本命名为Explode。 无需挂载到对象上。 首先是全部代码。 using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思…

excel实用问题:提取文字当中的数字进行运算

0、前言: 这里汇总在使用excel工作过程中遇到的问题,excel使用wps版本,小规模数据我们自己提取数据可行,大规模数据就有些难受了,因此就产生了如下处理办法。 需求:需要把所有文字当中的数字提取出来&…

【prompt实战】AI +OCR技术结合ChatGPT能力项目实践(BOL提单识别提取专家)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 需求背景 2. 目标 3. BOL通用处理逻辑…

昇思打卡营第五期(MindNLP特辑)番外:硅基流动 x 华为云DeepSeek V3 API推理MindTinyRAG

1.前言 前脚,DeepSeek面临的巨头企业官宣加入vs多国政府下场质疑的冰火两重天局势尚未平静(DeepSeek在美两重天:五大巨头接入,政府诚惶诚恐);后脚,OpenAI被逼急,凌晨亮出全新推理…

DeepSeek R1 Distill Llama 70B(免费版)API使用详解

DeepSeek R1 Distill Llama 70B(免费版)API使用详解 在人工智能领域,随着技术的不断进步,各种新的模型和应用如雨后春笋般涌现。今天,我们要为大家介绍的是OpenRouter平台上提供的DeepSeek R1 Distill Llama 70B&…

LabVIEW与PLC交互

一、写法 写命令立即读出 写命令后立即读出,在同一时间不能有多个地方写入,因此需要在整个写入后读出过程加锁 项目中会存在多个循环并行执行该VI,轮询PLC指令 在锁内耗时,就是TCP读写的实际耗时为5-8ms,在主VI六个…

Selenium记录RPA初阶 - 基本输入元件

防止自己遗忘,故作此为记录。 爬取网页基本元件并修改后爬取。 包含元件: elements: dict[str, str] {"username": None,"password": None,"email": None,"website": None,"date": None,"ti…

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…

Android studio 创建aar包给Unity使用

1、aar 是什么? 和 Jar有什么区别 aar 和 jar包 都是压缩包,可以使用压缩软件打开 jar包 用于封装 Java 类及其相关资源 aar 文件是专门为 Android 平台设计的 ,可以包含Android的专有内容,比如AndroidManifest.xml 文件 &#…

BurpSuite抓包与HTTP基础

文章目录 前言一、BurpSuite1.BurpSuite简介2.BurpSuite安装教程(1)BurpSuite安装与激活(2)安装 https 证书 3.BurpSuite使用4.BurpSuite资料 二、图解HTTP1.HTTP基础知识2.HTTP客户端请求消息3.HTTP服务端响应消息4.HTTP部分请求方法理解5.HTTPS与HTTP 总结 前言 在网络安全和…

把DeepSeek接入Word软件,给工作提质增效!

前几天给大家分享了 DeepSeek 的资源包,可能很多人并没有本地部署 DeepSeek 的需求,只想使用它来提高一下工作效率。那今天来分享一下怎么直接在 Word 软件调用 DeepSeek,避免在 Word 软件和网页版 DeepSeek 里来回切换。 ## 前置条件 1、有…

Linux进阶——web服务器

一、相关名词解释及概念: www:(world wide web)全球信息广播,通常来说的上网就是使用www来查询用户所需的信息。使用http超文本传输协议。 过程:web浏览器向web服务(Apache,Microsoft,nginx&…

QT笔记——多语言翻译

文章目录 1、概要2、多语言切换2.1、结果展示2.2、创建项目2.2、绘制UI2.2、生成“.st”文件2.4、生成“.qm”文件2.5、工程demo 1、概要 借助QT自带的翻译功能,实现实际应用用进行 “多语言切换” 2、多语言切换 2.1、结果展示 多语言切换 2.2、创建项目 1、文件…