我在批处理脚本的标头中添加了 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 字符集”的建议很好,但没有意义。
我们知道有很多方法可以解决这个问题。但对我们来说,比“如何绕过”更重要的是“为什么会发生这种情况”。如果我们不能找出问题背后的原因,问题就没有真正解决。
一个可能的通用解决方案是在每行中文注释末尾添加一个空格字符,参考本题体。