unicode perforce服务器中的BOM问题

时间:2016-07-12 05:42:08

标签: perforce

重新解决问题的步骤:

  1. 将文件添加到我的P4服务器,该文件被检测为'utf8'文件类型。

    我添加的文件是没有BOM的utf8编码。 The file I added is utf8 encoding without BOM.

    vob中的nobomb show

    nobomb show in vim

  2. p4客户端将其检测为'utf8' p4 client detect it as 'utf8'

    如果我在其他设备上执行相同的步骤,则会将文件类型检测为“unicode”;

    1. 从本地删除文件,然后从服务器同步。发生问题:文件变为带有BOM的utf8。
    2. 同步文件,文件变为带有BOM的utf sync the file, the file become utf with BOM

      如您所知,html文件中的BOM可能会导致很多问题....有没有人可以帮我解决这个问题?

      环境:

      1. 客户端版本: Rev。 Perforce Visual Client / MACOSX107X86_64 / 2015.2 / 1312139

      2. p4服务器处于“unicode”模式。

      3. 工作站的P4CHARSET设置为utf8。 enter image description here

2 个答案:

答案 0 :(得分:3)

'utf8'类型的文件始终与BOM同步 - 'utf8'类型就是这样设计的(参见relnotes,#998379)。如果您不想要BOM,则必须将其更改为“text”或“unicode”。

你所描述的是15.2中的一个已知错误(job083614):“如果P4CHARSET = utf8且服务器是unicode且文件有字节> x80并且有效,则utf8”然后文件被检测为utf8,应该是unicode。这个修复应该有希望(没有承诺)在16.2。

早期的p4客户端< = 15.1应该将其检测为'unicode'。

如果你不想输入'utf8'而是'unicode':

  • 使用“p4 add -t unicode< file>”
  • 添加您的文件
  • 在提交之前更改文件的类型。
  • 使用typemap将具有特定扩展名的所有文件添加为 '的unicode'。
  • 使用客户端(p4v,p4命令行)< = 2015.1 添加文件。后续同步/提交可以是更高版本。

您还可以使用触发器来阻止提交utf8文件类型(更改提交)

答案 1 :(得分:0)

我相信您正在寻找的答案可以在the Perforce Internationalization Notes

中找到

在您的问题中,您链接到2014.2国际化注释,但utf8文件类型比这更新;它是在2015.2版本中添加的。显然,您的服务器处于2015.2或更高版本。我链接到2016.1内部化说明。最好阅读您正在使用的服务器的确切版本的说明。

文件在工作站上的显示方式是:

  1. 服务器" unicode"设置:您似乎拥有启用Unicode的服务器
  2. 文件的类型(unicode,utf8或utf16):您似乎拥有unicode和utf8类型的文件,至少
  3. 工作站的P4CHARSET。从2014.2版开始,如果您未明确设置P4CHARSET,服务器将尝试自动分配值。
  4. 由于您似乎正在使用P4V将文件同步到工作站,因此您还必须考虑P4V代表您应用的设置。您可能会发现使用' p4'用于将某些文件同步到工作站的命令行工具。然后,您可以尝试使用不同的文件类型,不同的P4CHARSET设置等,直到找到可以获得预期结果的组合。

    但是,请务必注意您正在使用的客户端和服务器软件的完全版本,并阅读将完全应用于这些版本的说明,因为其中一些行为最近发生了变化,这可能让您感到困惑。