2010-10-27 68 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