2010-10-27 52 views
0

My .NET實用程序AjGenesis是一個代碼生成工具。編譯後的二進制文件在Ubuntu 10.x和Mono下運行時沒有出現故障。但我有一個問題:生成一個java文本文件(我的工具的普通文本文件),它會在每個文件的開始處生成字節順序標記。我使用的是System.Text.Encoding.Default:在Windows中,在Ubuntu中,一切正常,字節順序標記都是三個字節,表示UTF8,我猜。字節順序標記在Ubuntu中使用Mono生成文件

這種差異是一個問題,當我想使用ant或javac編譯生成的.java文件時,BOMs會生成錯誤。然後:

  • 在Ubuntu/Mono中使用什麼編碼,以便生成的文件可以由javac處理?
  • 我試過javac -encoding UTF8沒有成功,任何線索?我的猜測是:這不是爲了跳過材料清單。
  • 我試過System.Text.Encoding.ASCII。但我生成的文件有非ASCII文件(西班牙語重音字母)。如果我更改編碼,則添加BOM,並且javac拒絕這些文件。任何建議?

TIA

回答

1

不要使用Encoding.Default。爲什麼要讓你的輸出平臺具體?使用UTF-8 - 如果你必須使用UTF-8沒有BOM,你可以做到這一點:

Encoding utf8 = new UTF8Encoding(false); 

說實話,雖然,我很驚訝javac的失敗。你說你試過了「沒有成功」 - 結果是什麼?

+0

對不起。現在是工作,謝謝! javac失敗,因爲編譯器將額外字節拒絕爲源代碼中的無效字節。它將它們看作是一個額外的字符。 – ajlopez 2010-12-27 19:53:14

相關問題