解决Java中GB2312字符集缺失的汉字乱码问题

发布时间:2023年12月17日

最近在做一个读取CSV文件,解析其中数据并入库的功能,使用的是OpenCSV组件,CSV文件字符集是GB2312,读取文件流时使用的也是GB2312字符集,但最终测试结果发现写入数据库的中文中存在乱码,奇怪的是同一个字段中的中文,只乱码一部分。

最初怀疑是OpenCSV组件问题,但测试发现从CSV文件读取到流中时就已经乱码,如下:

解决方法:

GB2312是以简体中文为基础的国际标准汉字编码集,共收录六七千个简体汉字和其它非汉字的字符,而读取CSV文件中,存在未收录的汉字,如“埇”、“昇”等,这就导致了乱码。

解决方法是读取文件输入流时,以GBK编码进行读取,因为GBK能够用来表示繁体字和简体字,而GB2312只支持简体字,GBK兼容GB2312。

InputStreamReader inputStreamReader = = new InputStreamReader(new FileInputStream("D:\\test.csv"), "GBK");
BufferedReader br = new BufferedReader(inputStreamReader);
String s;
while ((s = br.readLine()) != null){
    System.out.println(s);
}

文章来源:https://blog.csdn.net/yinshengchen/article/details/134996539
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。