在 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
My .NET utility AjGenesis is a code generation tool. The compiled binaries runs without glitches under Ubuntu 10.x, and Mono. But I have a problem: generating a java text file (a normal text file for my tool) it generates Byte Order Mark at the beginning of each file. I'm using System.Text.Encoding.Default: in Windows, all OK, in Ubuntu, the Byte Order Mark are three bytes, indicating UTF8, I guess.
This difference is a problem, when I want to compile the generate .java files using ant, or javac, the BOMs generate errors. Then:
- What encoding to use in Ubuntu/Mono so the generated files could be processed by javac?
- I tried javac -encoding UTF8 without success, any clues? My guess: it's not for skip BOMs.
- I tried System.Text.Encoding.ASCII. But my generated files have non ASCII files (Spanish accented letters). If I change the encoding, the BOMs are added, and javac refuses the files. Any suggestion?
TIA
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要使用
Encoding.Default
。为什么要指定您的输出平台?使用 UTF-8 - 如果您必须使用不带 BOM 的 UTF-8,您可以这样做:不过说实话,我很惊讶 javac 失败了。你说你尝试过“但没有成功”——结果是什么?
Don't use
Encoding.Default
. Why make your output platform specific? Use UTF-8 - and if you have to use UTF-8 without a BOM, you can do that with:To be honest though, I'm surprised javac fails. You say you've tried it "without success" - what was the result?
尝试实例化 System.Text.UTF8Encoding 并提供不包含 BOM 的参数值。您可以在这里阅读:
http://msdn.microsoft.com/en-us/library/s064f8w2.aspx
Try instantiating System.Text.UTF8Encoding and supplying a parameter value that doesn't include BOMs. You may read about this here:
http://msdn.microsoft.com/en-us/library/s064f8w2.aspx