1

我需要帮助。我必须从文件中读取数据并将其存储到 Oracle 数据库中。当像“à”或“À”这样的字符出现在数据中时,我会遇到麻烦。例如,“à”被读取并变成“Ô到我的应用程序中,因此,当我尝试将数据保存到数据库中时,有时,数据库会抱怨要保存到的字段的值太大。我也试过

Normalizer.normalize(row, Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");

我也关注编码。我注意到,如果我在 Windows 机器上的数据文件(Cp1252 文件)上运行我的应用程序,我没有收到任何错误。可悲的是,当我在 Linux 机器上运行这些东西时,我遇到了错误。我正在使用 java 6.TIA。

4

1 回答 1

1

因此,Windows 机器上的默认字符编码可能是 windows-1252(latin-1 的超集)。这意味着如果您在读取文件时未指定字符集,Java 将默认为您的系统默认值并正确处理。

在您的 Linux 机器上,您的默认字符集可能是 UTF-8。这意味着如果您在读取文件时没有明确指定字符集,它将默认为 UTF-8 。. . 在这种情况下,这是错误的。

您没有在文件中发布您的阅读方式,但例如:

InputStreamReader isr = new InputStreamReader(file, "UTF-8");

这将创建一个输入流阅读器,用于读取 UTF-8 格式的文件。

于 2013-02-25T20:03:57.313 回答