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

发布于 2024-09-29 05:55:10 字数 537 浏览 2 评论 0原文

我的 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如果没有 2024-10-06 05:55:10

不要使用Encoding.Default。为什么要指定您的输出平台?使用 UTF-8 - 如果您必须使用不带 BOM 的 UTF-8,您可以这样做:

Encoding utf8 = new UTF8Encoding(false);

不过说实话,我很惊讶 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:

Encoding utf8 = new UTF8Encoding(false);

To be honest though, I'm surprised javac fails. You say you've tried it "without success" - what was the result?

牵你的手,一向走下去 2024-10-06 05:55:10

尝试实例化 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文