字节顺序标记在Ubuntu中使用Mono生成文件

时间:2010-10-27 22:24:20

标签: java encoding ubuntu mono

我的.NET实用程序AjGenesis是一个代码生成工具。编译后的二进制文件在Ubuntu 10.x和Mono下运行没有毛刺。但我有一个问题:生成一个java文本文件(我工具的普通文本文件),它会在每个文件的开头生成字节顺序标记。我正在使用System.Text.Encoding.Default:在Windows中,一切正常,在Ubuntu中,字节顺序标记是三个字节,表示UTF8,我猜。

这种差异是个问题,当我想使用ant或javac编译生成.java文件时,BOM会产生错误。然后:

  • 在Ubuntu / Mono中使用什么编码,以便生成的文件可以由javac处理?
  • 我试过javac -encoding UTF8没有成功,有什么线索吗?我的猜测:这不是跳过BOM。
  • 我试过System.Text.Encoding.ASCII。但我生成的文件有非ASCII文件(西班牙语重音字母)。如果我更改编码,则会添加BOM,javac会拒绝这些文件。有什么建议吗?

TIA

2 个答案:

答案 0 :(得分:1)

请勿使用Encoding.Default。为什么要使您的输出平台具体?使用UTF-8 - 如果您必须使用没有BOM的UTF-8,您可以使用:

Encoding utf8 = new UTF8Encoding(false);

说实话,我很惊讶javac失败了。你说你已经尝试过“没有成功” - 结果是什么?

答案 1 :(得分:1)

尝试实例化System.Text.UTF8Encoding并提供不包含BOM的参数值。你可以在这里阅读: http://msdn.microsoft.com/en-us/library/s064f8w2.aspx