Java源文件的汉字编码
我将一个Java项目从Windows平台导入Ubuntu。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
我的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源文件中用于注释