【问题标题】:Japanese character not showing properly converting CSV file日文字符未正确显示转换 CSV 文件
【发布时间】:2015-04-12 21:57:31
【问题描述】:

我正在从 Tatoeba 项目转换 CSV 文件。它包含日文字符。我正在将数据插入 SQLite 数据库。插入没有问题,但字符显示不正确。 如果我直接插入:

            String str = content_parts[2];
            sentence.setValue(str);

获取这样的值:

ãã¿ã«ã¡ãã£ã¨ãããã®ããã£ã¦ãããã

我已尝试从 JIS 解码为 UTF8:

            String str = content_parts[2];
            byte[] utf8EncodedBytes = str.getBytes("JIS");
            String s = new String(utf8EncodedBytes, "UTF-8");
            sentence.setValue(s);

JIS:

$B!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!r!)!)!/!)! )!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)!)! )!)!)!)!)!)!)!)!)!)(B

Shift-JIS:

????\??????�N?�}????????????????????????????N?�N? ??��??????

Shift_JIS:

??????\??????????????????????????????????????? ????????????????

CSV 文件(由 Excel 2010 打开时)

n きみにちょっとしたものг‚'г‚‚гЃЈгЃ¦гЃЌгЃџг‚€гЂ‚

我做错了什么?如何解决这个问题?

【问题讨论】:

  • 文件中的文本使用哪种编码?
  • 可能是数据库编码的问题,而不是 java 显示
  • @immibis,老实说,我不知道。现在我正在寻找如何识别编码
  • @ortis,我尝试过 System.out.println(s)。数据库和控制台中的值是一样的
  • 好吧,如果您无法在 DB 客户端中显示正确的单词,则可能是数据库编码问题。检查编码是否为UTF8

标签: java csv encoding utf-8 character-encoding


【解决方案1】:

如果您还在寻找解决方案,请参考以下链接

setting-a-utf-8-in-java-and-csv-file and handle Japanese characters

csv-reports-not-displaying-japanese-characters

简而言之,将 BOM(字节顺序标记)字符添加到文件输出流中,然后再将其传递给输出流编写器。

String content="要写入文件的某个字符串(任何语言)";

FileOutputStream fos = new FileOutputStream("D:\csvFile.csv");

fos.write(239);

fos.write(187);

fos.write(191);

Writer w = new BufferedWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8));

w.write(内容);

w.close();

希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    相关资源
    最近更新 更多