sách gpt4 ăn đã đi

java - 在 java 和 csv 文件中设置 UTF-8

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 21:01:47 25 4
mua khóa gpt4 giày nike

我正在使用此代码通过 OpenCSV 将波斯语单词添加到 csv 文件中:

String[] entries="\u0645 \u062E\u062F\u0627".split("#");
thử{
CSVWriter writer=new CSVWriter(new OutputStreamWriter(new FileOutputStream("C:\\test.csv"), "UTF-8"));

writer.writeNext(entries);
writer. đóng();
}
catch(IOException ioe){
ioe.printStackTrace();
}

当我在 Excel 中打开生成的 csv 文件时,它包含 "ứỶờịỆ"。 notepad.exe等其他程序没有这个问题,但是我所有的用户都在使用MS Excel。

将 OpenCSV 替换为 SuperCSV不能解决这个问题。

当我手动将波斯字符输入 csv 文件时,我没有任何问题。

câu trả lời hay nhất

我花了一些时间,但找到了解决您问题的方法。

首先我打开记事本并写下以下行:שלום, hello, привет然后我使用 UTF-8 将它保存为文件 he-en-ru.csv。然后我用 MS excel 打开它,一切正常。

现在,我编写了一个简单的 java 程序,将这一行打印到文件中,如下所示:

    PrintWriter w = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));
w.print(line);
w.flush();
w.close();

当我使用 excel 打开这个文件时,我看到了“gibrish”。

然后我尝试读取 2 个文件的内容,并且(如预期的那样)看到记事本生成的文件包含 3 个字节的前缀:

    239 EF
187 BB
191 BF

所以,我修改了我的代码,先打印这个前缀,然后再打印文本:

    String line = "שלום, hello, привет";
OutputStream os = new FileOutputStream("c:/temp/j.csv");
os.write(239);
os.write(187);
os.write(191);

PrintWriter w = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));

w.print(line);
w.flush();
w.close();

它奏效了!我使用 excel 打开文件并按预期看到了文本。

底线:在写入内容之前先写入这 3 个字节。此前缀表示内容为 'UTF-8 和 BOM '(否则它只是 'UTF-8 without BOM')。

关于java - 在 java 和 csv 文件中设置 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192186/

25 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress