java - JTable 中的重音在 Eclipse 中显示,但在 .jar 中不显示

标签 java utf-8 jtable non-ascii-characters

我正在 JTable 中显示一个 csv 文件(带有 UTF-8 编码和法语口音)。要读取该文件,我使用以下几行(s_path 是一个与 csv 文件的路径相对应的字符串):

reader = new CSVReader(new FileReader(s_path),',');

do{
    String currentLine = reader.readNext();
    ...
}

为了显示 JTable 中单元格的内容,我使用 html(即,“html”和“body”标记,如果单元格显示在多行上,则最终使用“br”标记)

当我在 Eclipse 中执行该项目时,它工作正常。但是,如果我从项目中导出 .jar 文件(并使用完全相同的 csv 文件),则不会显示重音符号(例如,请参见下图)。

accent not displayed in JTable with a .har

我真的不知道如何解决这个问题。您有什么建议吗?

如有必要,请随时询问更多详细信息。

提前致谢。

最佳答案

如果文件确实是使用 UTF8 编码的,则应该使用

reader = new CSVReader(new InputStreamReader(new FileInputStream(s_path), StandardCharsets.UTF_8), ',');

阅读它。您这样做的方式,它使用您平台的默认字符集,这可能不是 UTF8。

关于java - JTable 中的重音在 Eclipse 中显示,但在 .jar 中不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29983700/

相关文章:

java - JXTable 中非常不寻常的单元格突出显示

java - 在Java中以更简洁的方式实例化 map

java - GWT 中的基本文件上传

php - htmlspecialchars 是否足以转义 HTTP 响应中的 XML 元素内容?

java - 字节顺序标记搞砸了 Java 中的文件读取

java - printDebugData(JTabble table) 的作用是什么?

java - org.jdesktop.swingbinding.JTableBinding$BindingTableModel 无法转换为 javax.swing.table.DefaultTableModel

java - "java.net.BindException: Address already in use"尽管设置了 SO_REUSEADDR

java - 使用按位运算符检查 JAVA 中的梅森数

utf-8 - 用于 ASCII 的类似 UTF8 字符