【Javscript & Java】解决CSV中文乱码的问题

当CSV文件包含中文字符并用Excel打开显示为'???'时,原因是编码集不匹配。解决方法是在文件开头添加编码标识。例如,通过Javascript或Java,在文件头添加'BOM'(UTF-8的Byte Order Mark)来指定编码。这样可以确保Excel正确识别CSV文件的编码。
摘要由CSDN通过智能技术生成

问题

.csv文档的本质是文本文档,可以通过notepad++或者其他编辑器直接修改文档内容。

当然我们查看时主要使用Excel打开,但是当其中包含中文字符或全角字符时,这些特殊字符就会显示成“???”,显然这个是因为编码集不匹配的原因,那我们应该怎么解决呢?

解决方案

其实方法很简单,就是在.csv文档的开头加入编码集标识来声明编码集,这样做可以在Excel打开文档时指定编码集,下面是Javascript和Java的实例。

Javascript

<!DOCTYPE html>
<html>
<head>
	<title>Index</title>
</head>
<script type="text/javascript">
	function exportCSV() {
		var content = document.getElementById('content');
                // '\uFEFF'是重点
		var uri = new Blob(['\uFEFF' + content.value], {type:"text/csv"});
		var link = document.createElement("a");
		link.href = URL.createObjectURL(uri);
		link.style = "visibility:hidden";
		link.download = "test.csv";
		document.body.appendChild(link);
		link.click();
		document.body.removeChild(link);
	}
</script>
<body>
	<input type="text" name="content" id="content">
	<button onclick="exportCSV()">Export</button>
</body>
</html>

Java

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\test.csv");
        FileOutputStream fileOutputStream = new FileOutputStream(file);
        String content = "Chinese, 中文";
        // 下面这行是重点
        fileOutputStream.write(new byte[]{(byte)0xEF, (byte)0xBB, (byte)0xBF});
        fileOutputStream.write(content.getBytes(StandardCharsets.UTF_8));
        fileOutputStream.close();
    }
}

以上就是本文的全部内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值