2017-09-07 36 views
2

我有包含Java文件瑞典字符A,A,O(我必须包括这些在文件,我正在解析ISO-8859-1,包含这些文件的latin1文本文件)。该文件编译并在Windows计算机上运行。无法在Ubuntu上编译Java文件与特殊字符A,A,O(适用于Windows)

在编译文件在Ubuntu在bash我收到以下错误但是:

ConstructDatabase.java:76: error: unmappable character for encoding ASCII 
     case '?': return 27; 
      ^
ConstructDatabase.java:77: error: unmappable character for encoding ASCII 
     case '?': return 28; 
      ^
ConstructDatabase.java:78: error: unmappable character for encoding ASCII 
     case '?': return 29; 

我尝试使用javac -encoding ISO-8859-1标志,这使得文件的编译,但无法按照预期工作。我也尝试使用export LC_ALL=C命令(我不确定它为什么会影响java编译,但它在其他线程中被建议),但它仍然不起作用。

任何提示将不胜感激。

+0

编译器必须知道用于写入文件的字符编码。为了告诉它,你必须知道用于写入文件的字符编码以及如何告诉它。对于后者,请尝试使用'javac -help'或同等的东西。 –

回答

0

编译错误给出了最必要的信息:“为ASCII编码字符不可映射”。这意味着,编译器期望Java源文件以ASCII编码,并且ASCII不包含这些字符。

你的源文件在某种程度上包含瑞典字符,也许编码为ISO-8859-1,也许为UTF-8(只提最有可能的)。你必须找出你的源文件正在使用哪一个(这不是一项简单的任务)。

你的Ubuntu环境好像是用ASCII作为默认编码。然后将源文件回显给终端可能会给你一个提示。如果不是瑞典字符,而是看到两个隐含字符的组合,那么该文件可能是UTF-8编码的。

你必须告诉正确的编码在Ubuntu上编译器。由于javac -encoding ISO-8859-1无法按预期工作,因此我猜想您的文件使用UTF-8编码,因此javac -encoding UTF-8可能是解决方案。

而不是与编码乱搞而且,您可以用uxxxx转义\源文件中替换的字符。这将以ASCII,UTF-8,ISO-8859-1和基于ASCII的所有其他编码工作。

相关问题