我试图用java创建一个CSV文件包含一些阿拉伯字母的数据,但当我打开文件时,我发现阿拉伯字母显示为符号。下面是我的代码:
String csvFilePath = "test.csv";
BufferedWriter fileWriter = new BufferedWriter(new FileWriter(csvFilePath));
fileWriter.write("الاسم ، السن ، العنوان");
字符串
CSV文件中的数据如下所示
ط´ط±ظٹط·
型
那么我该如何解决这个问题呢?
4条答案
按热度按时间izkcnapc1#
如Write a file in UTF-8 using FileWriter (Java)?中所述,您应该使用
OutputStreamWriter
和FileOutputStream
而不是FileWriter
,并指定编码:字符串
评论后编辑:
要确保源代码的编码不是问题,请像这样转义您的unicode字符串:
型
bqucvtff2#
在我的例子中,文件定义如下。
第一个月
变量fileName是区域设置相关的,即在阿拉伯语中它包含“CSV”,在英语中它包含“export”。变量fileExtension总是包含“csv”。
现在,问题是变量文件在阿拉伯语中看起来像“csv.txt”,而在英语中看起来像“export.csv”。
这是正确的方式为一个文件在阿拉伯语或它应该看起来像“阿拉伯语.csv”?
iklwldmw3#
正如其他人所提到的:使用OutputStreamWriter。另外,你可以写“\uFEFF”作为第一个字符。这将作为一个字节顺序标记,它有助于像Excel这样的应用程序知道你使用的编码。
ktca8awb4#
当Microsoft Excel以CSV UTF-8格式保存文件时,它会在文件的开头添加三个字节。下面是一个java函数来实现此目的:
字符串