提问人:Lurito 提问时间:10/28/2023 最后编辑:Lurito 更新时间:11/5/2023 访问量:89
批处理脚本注释中的奇怪编码问题
A weird encoding problem in comments of Batch scripts
问:
我在 Batch 脚本的标题中添加了 AGPL-3.0 许可证的公告(以 UTF-8 保存)。另外,为了方便中文开发者,我还在下面添加了一个中文翻译链接,如下所示:
chcp 65001 > nul
:: [English announcement]
::
:: 你也可以在此处阅读 GNU Affero 通用公共许可协议的非正式中文翻译:
:: https://www.chinasona.org/gnu/agpl-3.0-cn.html
:: 请注意,本翻译本仅为帮助中文使用者更好地理解 GNU Affero 通用公共许可协议,
:: 不适用于使用 GNU Affero 通用公共许可协议发布的软件的法律声明。
pause
它在为软件启用了 UTF-8 的系统中运行良好。但是在中国系统(带有ANSI / GB2312字符集)中,它会报告错误。'�可协议发布的软件的法律声明。' is not recognized as an internal or external command
但是,如果我删除 URL 下方行末尾的逗号 (),如下所示:,
:: 请注意,本翻译本仅为帮助中文使用者更好地理解 GNU Affero 通用公共许可协议
:: 不适用于使用 GNU Affero 通用公共许可协议发布的软件的法律声明。
即使在中国系统中,它也运行良好。这意味着系统可以将此逗号或其他字符识别为某种控制字符。
这对我来说真的是一个奇怪的问题。我想知道,逗号怎么了?
更新:
无论我使用还是作为注释标志,这个问题仍然存在。
::
rem
这仍然是一个面向全世界的项目,尽管我希望它包含中文评论以方便中国开发人员。“使用代码页 936 和 GB2312 字符集”的建议很好,但没有意义。
我们知道有很多方法可以解决这个问题。但对我们来说,比“如何绕过它”更重要的是“为什么会这样”。如果我们不能弄清楚问题背后的原因,问题就没有真正解决。
答:
0赞
Lurito
10/28/2023
#1
一个可能的通用解决方案是在每行中文注释的末尾添加一个空格字符。请参阅此问题正文。
评论
::
::
Rem
936
65001
goto skipovercomments
关于为什么的额外评论?