You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ICsvListWriter生成CSV时上标字符出现乱码问题求助

解决SuperCSV写入上标字符时出现乱码的问题

这个问题我之前也碰到过,本质是字符编码不匹配导致的:你看到的¹是UTF-8编码的上标字符¹(UTF-8字节为0xC2 0xB9)被ISO-8859-1编码解码后的结果,而SuperCSV默认使用系统默认字符编码(通常是ISO-8859-1),而非UTF-8。

核心解决方案:显式指定UTF-8编码创建Writer

关键是初始化ICsvListWriter时,不要直接用FileWriter(它会沿用系统默认编码),而是通过OutputStreamWriter显式指定UTF-8编码。

示例代码如下:

import org.supercsv.io.CsvListWriter;
import org.supercsv.io.ICsvListWriter;
import org.supercsv.prefs.CsvPreference;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;

public class CsvWriterFixExample {
    public static void main(String[] args) throws Exception {
        // 显式指定UTF-8编码构建Writer
        try (ICsvListWriter csvWriter = new CsvListWriter(
                new OutputStreamWriter(new FileOutputStream("output.csv"), StandardCharsets.UTF_8),
                CsvPreference.STANDARD_PREFERENCE)) {
            
            List<Object> columns = new ArrayList<>();
            String myString = "abcd1";
            // 使用Unicode转义或直接写入上标字符都可正常工作
            columns.add(myString.replaceAll("1", "\u00B9"));
            csvWriter.write(columns);
        }
    }
}

额外验证提示

写入完成后,确保用支持UTF-8的文本编辑器(比如Notepad++、VS Code)打开CSV文件,并且编辑器设置为UTF-8编码显示,避免因编辑器默认编码问题导致的显示异常。

内容的提问来源于stack exchange,提问作者Nags

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:00:49