gpt4 book ai didi

Java - OS X - Unicode 损坏的字符串

转载 作者:行者123 更新时间:2023-12-02 00:03:17 25 4
gpt4 key购买 nike

我正在 OS X 上使用 Java 平台处理 Unicode 文本文件。当我使用 TextEdit 或 TextWrangler 打开文件时,我看到的不是“Nattvardsgästerna”,而是“Nattvardsgästerna”(这是不正确的)。当我使用 Java io 流打开文件时,我看到相同的错误 String“Nattvardsg sterna”。

当我在电脑上打开该文件时,我看到了正确的字符串。我不知道从哪里开始解决这个问题...这是我的 OS X 设置的问题吗?我应该使用特殊标志打开 Java 流吗?

谢谢。

附注我像这样打开文件: fileReader = new BufferedReader(new FileReader(file));

附注另外,我应该提到,我想将结果输出为 SQL 文本文件,因此操作系统正确区分 ä 非常重要。

最佳答案

InputStream 读取字节(而不是字符),所以我假设当你说:

When I open the file using java io stream

...您的真正意思是“当我使用 Java Reader 打开文件时”。

编辑:您的评论表明您正在这样做:

new BufferedReader(new FileReader(file));

InputStreamReader 有一个 constructor允许您设置字符编码。如果您不指定,它将使用平台默认值。平台默认值不太可能是 unicode(在我的 Macbook 上,它设置为“US-ASCII”)。

为了设置字符编码,您必须创建中间输入流读取器,而不是让 FileReader 为您完成此操作(因为 FileReader 使用平台默认编码)。

假设文件使用 UTF-8 编码,请使用:

new BufferedReader(new InputStreamReader(new FileInputStream(file), 
Charset.forName("UTF-8")));

或者,您可以通过向 JVM 提供参数来更改平台默认值。您可以查看this answer了解完整的详细信息,但基本思想是设置 file.encoding Java 系统属性。链接的答案提供了几种实现此目的的方法。

进一步编辑:

P.S.S. Also, I should mention that I'd like to output the result as an SQL text file so it is important for the OS to distinguish ä correctly.

操作系统与此无关。文件系统只是将字节打乱。如何解释这些字节完全取决于读取这些文件的应用程序。这个答案告诉你如何让你的 Java 程序正确解释字节。为了使您的数据库能够正确解释字节,您需要配置数据库编码。

关于Java - OS X - Unicode 损坏的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com