2017-09-07 34 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的所有其他編碼工作。

相關問題