微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

centos – 仅在某些目录中文件名中的字符损坏

我们有一个运行CentOS 5.8的Web服务器,它使用SVN进行版本控制.尝试切换到最新版本时,我们收到有关上载目录中文件文件名的错误
svn: Error converting entry in directory 'adm/emails/upload' to UTF-8
svn: Valid UTF-8 data
(hex: 54 79)
followed by invalid UTF-8 sequence
(hex: f6 6b 69 72)

经过调查,我们注意到有些文件损坏了文件名:

$ls ~/public_html/adm/emails/upload/
Ty?el?m?trendit.csv
Ty?kirja1.csv

为了快速完成更新,我们简单地将文件复制到主目录中.令人惊讶的是,他们的文件名在新位置看起来很好:

$ls ~/
Työelämätrendit.csv
Työkirja1.csv

更新后,我们将它们移回原来的状态,并再次打破文件名.什么可能导致这种情况,我们如何解决它?系统的语言环境设置为LANG = en_US.UTF-8.

x54 x79是ASCII中的“Ty”,有效的ISO-8859-1和UTF-8,但xF6 x6B x69 x72是“ökir”,采用ISO-8859-1编码,不是有效的UTF-8.它正在被翻译成两种方式,介于令人毛骨悚然和辉煌之间.这就提出了文件系统是否涉及的问题.

大多数Unix文件系统对字符集都是非常不可知的 – 它们只是做字节.您可以检查两个文件系统,如果有两个(一个可能不是ext3),有关它们如何安装的细节,并深入了解通过〜/ public_html / adm / email / upload /的路径是通过NFS还是其他东西喜欢它可能会在底层文件系统上设置另一个文件系统字符集 – Samba在那里找到一个非常有趣的东西,因为它有明确的字符集选项.

当然,检查LC_CTYPE是否设置奇怪也是一个好主意:

$touch Työelämätrendit.csv
$ls T*
Työelämätrendit.csv
$LC_CTYPE=C ls T*
Ty??el??m??trendit.csv
$

也许在SVN过程中没有设置LC_CTYPE?当它由网络服务器,批处理作业等间接运行时,不难发生.

原文地址:https://www.jb51.cc/centos/373406.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。