批处理脚本注释中奇怪的编码问题

问题描述 投票:0回答:1

我在批处理脚本的标头中添加了 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 通用公共许可协议发布的软件的法律声明。

即使在中文系统中也运行良好。这意味着系统可能会将这个逗号或其他字符识别为某种控制字符。

这对我来说确实是一个奇怪的问题。我想知道,逗号怎么了?

更新:

  1. 无论我使用

    ::
    还是
    rem
    作为评论标志,这个问题仍然存在。

  2. 这仍然是一个面向全世界的项目,尽管我希望它包含中文注释以方便中国开发者。 “使用代码页 936 和 GB2312 字符集”的建议很好,但没有意义。

  3. 我们知道有很多方法可以解决这个问题。但对我们来说,比“如何绕过”更重要的是“为什么会发生这种情况”。如果我们不能找出问题背后的原因,问题就没有真正解决。

batch-file cmd utf-8 character-encoding gb2312
1个回答
0
投票

一个可能的通用解决方案是在每行中文注释末尾添加一个空格字符,参考本题体

© www.soinside.com 2019 - 2024. All rights reserved.