不同操作系统中 UTF-8 的 Java 问题

问题描述 投票:0回答:4

我正在和其他人一起编写大学作业的应用程序,有时我们在注释或视图中显示的字符串中使用非英语字符。问题是每个用户都在使用不同的操作系统,有时甚至使用不同的 IDE 来编程。

具体来说,一个使用MacOS,另一个使用Windows7,另一个和我使用Ubuntu Linux。此外,他们都使用 Eclipse,而我使用 gedit。我们不知道 Eclipse 或 gedit 是否可以配置为与 UTF8 bussiness 一起正常工作,至少我没有找到适合我的东西。

事实是,我用非英文字符写的东西在 Windows 和 MacOS 虚拟机中会出现奇怪的符号,反之亦然,有时,我的非 linux 朋友写的东西会引发这样的编译警告:

warning: unmappable character for encoding UTF8
.

你有解决这个问题的想法吗?这不是很紧急,但会有所帮助。

谢谢。

java eclipse utf-8 gedit
4个回答
8
投票

不确定 gedit,但您当然可以配置 eclipse 以使用您喜欢的源代码编码。它是项目属性的一部分(并保存在项目中的 .settings 目录中)。

alt text


2
投票

Eclipse 在 UTF-8 下运行良好。请参阅迈克尔关于配置它的回答。也许对于 Windows 和/或 MacOS 来说,这确实是必要的。 Ubuntu 使用 UTF-8 作为默认编码,所以我认为没有必要在那里配置 Eclipse。

关于Gedit,这张图片表明在Gedit中保存文件时可以更改编码。

无论如何,您需要确保所有人都使用 UTF-8 作为您的来源。这是实现源代码跨平台可移植性的唯一合理方法。


1
投票

您可以通过使用 字符转义序列 并仅对文件使用 ASCII 编码来避免字符串中的问题。

例如,破折号可以表示为“\u2013”。

您可以在这里快速搜索Java代码。

正如 Sergey 在下面指出的那样,这最适合少量的非 ASCII 字符。另一种方法是将所有 UTF-8 字符串放入资源文件中。 Eclipse 为此提供了一个方便的向导。


1
投票

如果您的 UTF8 文件包含 BOM(字节顺序标记),那么您将遇到问题。这是一个已知的错误,请参阅此处此处

BOM 对于 UTF8 是可选的,大多数时候它不存在,因为它破坏了许多工具(如 Javadoc、XML 解析器……)。

© www.soinside.com 2019 - 2024. All rights reserved.