【问题标题】:JAVA : formatting of textJAVA:文本格式
【发布时间】:2018-05-24 23:17:10
【问题描述】:

我将 txt 文件作为字符串集合加载,然后将其保存在数据库 HSQLDB 中。当我从数据库加载并打印 TextArea 时,文本的输出类型是这样的:

Quando il flusso � maggiore nella narice di destra � la Nadi Pingala a 占主导地位。 L'energia vitale � molto pi� attiva e di conseguenza saremo pi� forti fisicamente,saremo pi� introversi e solari。杜兰特 il sonno tend a non。

如何正常格式化?

【问题讨论】:

  • 您应该向我们展示您如何从 txt 文件中读取数据、如何对 txt 文件进行编码以及如何在 DB 中存储和检索数据
  • 这是在 Eclipse 控制台中打印的吗?如果是这样,您是否设置了它的字符编码以允许打印您感兴趣的字符?请阅读:stackoverflow.com/questions/36030836/…
  • 我在 eclipse 中使用这些指令加载了一个 txt 文件: byte[] encoded = Files.readAllBytes(Paths.get(file.getPath())); t_inserimentoTItolo.setText(file.getName().substring(0, file.getName().indexOf("."))); return new String(encoded, "UTF-8");
  • 我使用经典的 ResultSet 从数据库加载,数据被保存为 VARCHAR

标签: java formatting


【解决方案1】:

尝试将输出文本格式化为 UTF-8 或 ISO-8859-1

【讨论】:

  • 我用 return new String(encoded, "UTF-8");解决不了问题
  • 有原文吗?
  • 当然:Quando il flusso è maggiore nella narice di destra è la Nadi Pingala a predominare。 L'energia vitale è molto più attiva e di conseguenza saremo più forti fisicamente, saremo più introversi e solari。 Durante il Sonno Tende a non
  • 我这样做并且格式很好new String(s.getBytes(), "UTF-8")尝试将文件的所有字符串之前获取到getBytes()
  • 我用 return new String(encoded, "UTF-8");编码是字节数组,我的代码与你的相同
【解决方案2】:

原始文本文件必须是UTF-8,否则需要在文件读取时进行转换:

新字符串(String_Readed_From_File.getBytes(“ISO-8859-1”),“UTF-8”);

如果文件的编码是ISO-8859-1,否则适配文件的编码

【讨论】:

  • 我已经做到了:byte[] encoded = Files.readAllBytes(Paths.get(file.getPath())); return new String(encoded, "UTF-8");
  • 数据库编码设置怎么样?
  • 数据库中的数据类型是 VARCHAR,然后我使用经典的 ResultSet 加载。
  • 我不知道 HSQLDB 但编码的设置与数据类型不同。例如,对于 PostgreSQL,它是在创建数据库时选择的参数。
  • 在读取文件后显示文本,然后在读取数据库后显示。这将为您提供问题的真正根源。可以肯定的是,这是一个编码问题,因为它不同于 Java 的编码 UTF-8。
【解决方案3】:

根据您所说的,您正在尝试读取您的文本文件,就好像它是用 UTF-8 编码的一样,但事实并非如此。因此,您在读取文件的初始步骤中失败了,之后您所做的任何事情都无法从该失败中恢复。看完文件再谈怎么办是没用的。

我们无法猜测您的初始文件的真正编码是什么。您需要将此文件放在某个地方供我们下载。到目前为止,您所展示的只是它不是 UTF-8(因为如果是,您就不会遇到所描述的问题。)

你说过你正在使用这个代码:

new String(encoded, "UTF-8");

因为“encoded”包含文件的字节,并且您的文件不是 UTF-8,所以这条指令是错误的。您需要将“UTF-8”替换为文件的真实编码。

例如它可能是:

new String(encoded, StandardCharsets.ISO_8859_1);

另一种解决方案,是不要触摸您的 Java 代码并保持原样,而是通过假设文件是​​ UTF-8 正确来使其正确。为此,您可以使用 Notepad++ 之类的文本编辑器,告诉它将文件转换为 UTF-8,然后保存。

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多