Perforce unicode 问题:使用非 ASCII 字符同步文件会导致截断

Perforce unicode issue: sync files with non-ascii characters leads to a truncation

我正在使用 P4/NTX64/2016.2/1487173 (2017/02/14)Windows 7 64bit (Code Page is 936)。我的服务器在 uniocde 模式下工作,服务器使用的字符集是 utf8-no-bom.

当我在 CMD 中执行以下命令时,而不是文件 //Depot/副本.txtp4 同步了我的软件仓库中的所有文件。

p4 sync -f "//Depot/副本.txt"

我尝试添加 -C utf8-C auto-Q utf8,但 p4 似乎截断了 //Depot/副本.txt,这会导致完整的软件仓库同步,​​例如下面:

p4 sync -f

只有加上-C cp936才能解决这个问题(其实this option只控制unicode类型文件翻译的行为):

p4 -C cp936 sync -f "//Depot/副本.txt"

但是,在翻译 unicode 类型的文件时,此解决方法失败。

我知道 Windows CMD 需要 cp936 encoded characters。这是 perforce 命令行工具的某种错误吗?

尝试将 P4COMMANDCHARSET 设置为 cp936 -- 这将告诉 CLI 使用该字符集来翻译参数,而不是翻译文件内容。

例如:

p4 -Q cp936 sync -f "//Depot/副本.txt"

或:

p4 set P4COMMANDCHARSET=cp936
p4 sync -f "//Depot/副本.txt"

https://www.perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/P4COMMANDCHARSET.html