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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Perforce unicode问题:使用非ascii字符的同步文件会导致截断相关的知识,希望对你有一定的参考价值。

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

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

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使用该charset来翻译参数,但不能用于翻译文件内容。

e.f.:

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

以上是关于Perforce unicode问题:使用非ascii字符的同步文件会导致截断的主要内容,如果未能解决你的问题,请参考以下文章

Perforce 超级用户丢失

Win32API UNICODE编码&宽字节

Jenkins Perforce 插件未从 Perforce 签出代码

js中有没有把十六进制数转换成Unicode字符的函数

非 unicode 程序的语言更改 ini 阅读

删除 N 个字符(非 Unicode 支持)