Java源文件的汉字编码

Java源文件的汉字编码,java,encoding,Java,Encoding,我将一个Java项目从Windows平台导入Ubuntu。 我的Ubuntu是10.10,Gnome环境:我的语言设置为en\u US:en 我的终端的字符编码是:Unicode(UTF-8) 我的IDE是eclipse,文本文件编码是:GBK 在源文件中,有一些中文常量字符 该项目使用ant在Windows上成功构建, 但在Ubuntu上,我发现编译错误: illegal character: \65533 非法字符:\65533 我不想使用\uxxx格式,因为文件已经存在 我尝试了javac

我将一个Java项目从Windows平台导入Ubuntu。
我的Ubuntu是10.10,Gnome环境:我的
语言设置为
en\u US:en

我的终端的字符编码是:Unicode(UTF-8)
我的IDE是eclipse,文本文件编码是:GBK

在源文件中,有一些中文常量字符

该项目使用ant在Windows上成功构建,
但在Ubuntu上,我发现编译错误:

illegal character: \65533 非法字符:\65533 我不想使用\uxxx格式,因为文件已经存在


我尝试了javac的
-encoding
选项,但仍然无法编译。

您需要将源代码从windows代码页转换为UTF-8。用于此。

我认为问题不在于Ubuntu、Ubuntu控制台、Javac或Eclipse,而在于将文件从windows传输到Ubuntu的方式。在将其复制到Ubuntu之前,您必须将其存储为utf-8,否则在您的Windows中设置的代码点信息您的区域设置已经丢失。

您是否在
build.xml
中指定了
编码
选项

应该是这样的:

<javac encoding="GBK" ...>

如果尚未指定,则在Windows上它将使用平台默认编码(在您的设置中为GBK),在Linux上它将使用平台默认编码(在您的设置中为UTF-8)


由于您希望构建在两种平台上都能工作(最好不更改任何一种平台的配置),因此您需要在编译时指定编码。

要尝试此方法:打开Notepad2(或同等版本),将其切换到utf-8,复制粘贴代码到其中,存储它(它将使用utf-8)并复制到Ubuntu。现在将该文件与之前传输的文件进行比较。不,这不是必需的,可能是Java(因此
javac
)支持Windows编码,他只需要在他的ant构建中指定它。是否可以将文本文件编码更改为utf-8,然后将
编码utf-8
添加到编译器选项。源文件来自svn存储库,将我的环境更改为Ubuntu是我自己的决定,所以我想我无法将文件编码从GBK更改为UTF-8。与字符串相同的中文字符也可以,但作为单个字符会导致编译错误。\65533是替换字符U+FFFD。为了解决这个问题,编写一个非常简单的类来重现这个问题。然后发布源文件和十六进制转储文件。通过查看,我们将能够告诉您确切的问题。在我在ubuntu上创建的测试GBK java文件中:
char ch=国';
System.out.println(ch)。如果我没有使用
-encoding
,那么我会得到错误消息:
警告:编码UTF8的字符不可映射,但是当我使用
-encoding GBK
时,javac和java都很高兴。我尝试过这个方法,但得到错误消息:“警告:编码GBK的字符不可映射”,错误消息在java源文件中用于注释