当前位置: 首页 > 面试题库 >

SVN错误:无法将字符串从本地编码转换为“ UTF-8”

樊宏邈
2023-03-14
问题内容

我有一个提交后钩子脚本,当对存储库进行提交时,该脚本执行工作副本的SVN更新。

当用户使用TortoiseSVN从Windows计算机提交到存储库时,他们会收到以下错误消息:

post-commit hook failed (exit code 1) with output:
svn: Error converting entry in directory '/home/websites/devel/website/guides/Images' to UTF-8
svn: Can't convert string from native encoding to 'UTF-8':
svn: Teneriffa-S?\195?\188d.jpg

上面有问题的文件是:Teneriffa-Süd.jpg注意带重音符号的u。这是因为该站点是德语,并且文件是用德语拼写的。

在Linux命令行上对工作副本执行更新时,不会遇到错误。仅当Windows SVN客户端通过提交执行提交后挂接时,才会出现上述错误。

问题:

  1. SVN为什么会尝试更改文件的编码?
  2. 是否允许文件名包含Windows标准ASCII字符之外的字符?

更新:

事实证明,有问题的文件名正确显示为Teneriffa- Süd.jpg从Windows计算机(通过Samba)查看时,但是当我从文件所在的Linux服务器(使用SSH和PuTTY)查看文件名时,Teneriffa- Süd.jpg


问题答案:
  1. 它不会更改文件的编码。它更改了文件名的编码(更改为每个客户端都希望能够理解的名称)。
  2. 允许谁?NTFS使用16位代码点,Windows可以根据您的要求公开各种编码的文件名(它将尝试将其转换为您要求的编码)。现在…(您的要求)取决于您使用的特定svn客户端。对我来说,这听起来像是TortoiseSVN中的错误。

编辑添加:

啊。我误解了症状。svn服务器将所有内容存储在utf-8中(似乎成功完成了此操作)。

提交后挂钩是无法从UTF-8转换的位。如果我正确理解您的意思,则服务器上的提交后挂钩会触发对共享驱动器的svn更新(因此svn服务器会向自身启动svn客户端…)?这意味着需要固定的配置是
服务器上 客户端 的配置 在执行svn服务器的环境中检查LANG / LC_ALL。
。碰巧的是,挂钩在真空环境中运行(请参阅技巧)。因此,您应该在挂钩本身中设置变量。

另请参阅此页面以获取有关svn如何处理本地化的信息



 类似资料:
  • 问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即

  • 问题内容: 我有一个带有“ñ”字符的字符串,并且我有一些问题。我需要将此字符串编码为UTF-8编码。我已经通过这种方式尝试过,但是没有用: 如何将该字符串编码为utf-8? 问题答案: Java中的对象使用无法修改的UTF-16编码。 唯一可以使用不同编码的是。因此,如果你需要UTF-8数据,则需要一个。如果你有一个包含意外数据的,则问题出在较早的地方,该错误地将一些二进制数据错误地转换为a (即

  • ()中的ValueError回溯(最近一次调用)---- ~\Anaconda3\lib\site packages\sklearn\preprocessing\data.py in fit_transform(self,X,y)2017”““2018年返回所选的fit_transform(X,self.\u fit_transform- ~\Anaconda3\lib\site-包\skLear

  • 使用CAST(作为XML)转换XML字符串在许多情况下都能正常工作,但如果字符串包含重音字符,则会出现错误“非法XML字符”。 结果: 此外,同样的XML但是UTF-16编码,莫名其妙地工作: 结果: 这些字符在UTF-8中是非法的吗?还是有更好的方法转换成XML数据类型?

  • 问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl

  • 我将XML作为字符串传递给一个方法,并再次将其转换为XML来完成我的工作。 其正常工作正常,但当出现特殊字符时,如<代码> 我的XML字符串: 我的代码是: 错误: “=”是意外标记。预期标记为“;”。第1行,位置150。 完全错误为: 系统Xml。XmlException未由用户代码处理HResult=-2146232000消息=“=”是意外令牌。预期标记为“;”。第1行,位置150。源=系统。