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

Java写入GitHub Issues到CSV文件出现格式与编码异常如何解决?

问题解决方法

1. 编码乱码与UTF-8解码错误修复

问题原因

Java原生FileWriter默认使用操作系统默认编码(Windows环境通常为GBK/GB2312)写入文件,非UTF-8编码导致存储字符集不匹配,出现乱码及Python读取时解码报错。

修复方案

替换FileWriter为指定UTF-8编码的字符输出流,示例如下:

// Java 11及以上版本写法
BufferedWriter writer = Files.newBufferedWriter(Paths.get("ISSUE-DOWNLOAD.csv"), StandardCharsets.UTF_8);

如果需要兼容Excel打开CSV不出现乱码,可在写入表头前先写入UTF-8 BOM头:

writer.write('\ufeff');

2. CSV列错位问题修复

问题原因

手动拼接制表符分隔内容时,未处理GitHub Issue正文中自带的制表符、换行符、特殊符号等,导致分隔符识别混乱,列错位;同时原逻辑未处理body为null的场景,会出现行数据缺失。

修复方案

优先使用成熟的CSV处理库(如OpenCSV)生成规范CSV,避免手动拼接的转义遗漏问题。如果不希望引入第三方依赖,可按CSV规范手动处理转义,完整修改后代码如下:

BufferedWriter writer = Files.newBufferedWriter(Paths.get("ISSUE-DOWNLOAD.csv"), StandardCharsets.UTF_8);
// 写入BOM头兼容Excel
writer.write('\ufeff');
// 写入表头,字段用双引号包裹
writer.append("\"Id\"\t\"Body Text\"");
writer.append("\n");

for (GHIssue issue : repository.getIssues(stateOpen)) {
    // 写入ID字段
    writer.append("\"").append(String.valueOf(issue.getNumber())).append("\"\t");
    // 处理Body内容
    String body = issue.getBody() == null ? "" : issue.getBody();
    // 转义内容中的双引号
    String escapedBody = body.replace("\"", "\"\"");
    // 写入转义后的Body
    writer.append("\"").append(escapedBody).append("\"");
    writer.append("\n");
}
writer.close();

3. Python读取适配

如果读取时仍存在少量编码异常,可在read_csv中添加编码容错参数:

df = pd.read_csv('ISSUE-DOWNLOAD.csv', sep='\t', na_values='n/a', encoding='utf-8', encoding_errors='replace')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:54:03