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

a7qyws3x  于 2023-05-05  发布在  Java
关注(0)|答案(4)|浏览(166)

我正在和其他人一起编写一个大学作业的应用程序,有时我们会在注解或视图中显示的字符串中使用非英语字符。问题是每个人都在使用不同的操作系统,有时是不同的IDE来编程。
具体地说,一个使用MacOS,另一个使用Windows7,另一个使用Ubuntu Linux。此外,他们都使用Eclipse,我使用gedit。我们不知道Eclipse或gedit是否可以配置为正确地与UTF8业务一起工作,至少我没有找到适合我的东西。
事实上,我用非英语字符写的东西在Windows和MacOS虚拟机中会出现奇怪的符号,反之亦然,有时,我的非linux朋友写的东西会引发这样的编译警告:warning: unmappable character for encoding UTF8 .
你有什么办法解决这个问题吗?这不是真的紧急,但它将是一个帮助。
谢谢大家。

r7knjye2

r7knjye21#

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

nzk0hqpo

nzk0hqpo2#

Eclipse可以很好地处理UTF-8。查看Michael关于配置的回答。也许对于Windows和/或MacOS来说,这是非常必要的。Ubuntu使用UTF-8作为默认编码,所以我认为没有必要在那里配置Eclipse。
至于Gedit,this picture表明在Gedit中保存文件时可以更改编码。
无论如何,你需要确保你们所有人都使用UTF-8作为你的源代码。这是实现源代码跨平台可移植性的唯一合理方法。

44u64gxh

44u64gxh3#

您可以通过使用字符转义序列和仅对文件使用ASCII编码来避免字符串中的问题。
例如,短划线可以表示为“\u2013”。
您可以快速搜索单个字符here的Java代码。
正如Sergey在下面指出的,这对少量的非ASCII字符最有效。另一种方法是将所有UTF-8字符串放在资源文件中。Eclipse为此提供了一个方便的向导。

yquaqz18

yquaqz184#

锁定,本次有disputes about this answer’s content正在解析。它目前不接受新的交互。

如果您的UTF8文件包含BOM(字节顺序标记),那么您将遇到问题。这是一个已知的bug,参见herehere
BOM在UTF8中是可选的,大多数时候它并不存在,因为它破坏了许多工具(如Javadoc,XML解析器等)。

相关问题