这个错误是因为 SVN 客户端在尝试把 UTF-8 编码的文件名转换成当前系统“本地编码”时失败,根本原因就是系统的 locale 没有设置为 UTF-8。解决思路:把系统 locale 改成 UTF-8 即可。
Linux 通用做法(CentOS、Ubuntu、Debian 等均适用)
-
查看当前 locale
locale如果看到LC_ALL=或LANG=后面不是*.UTF-8,就需要改。 -
临时生效(仅当前会话,测试用)
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8然后重新执行svn up/svn co测试。 -
永久生效(推荐)
把同样的三行追加到当前用户的环境文件:echo -e "\nexport LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8\nexport LANGUAGE=en_US.UTF-8" >> ~/.bashrc source ~/.bashrc如果是所有用户,写到/etc/profile或/etc/bash.bashrc里即可。 -
确认系统已安装 UTF-8 语言包
Debian/Ubuntu:sudo apt-get install language-pack-enCentOS/RHEL:sudo localedef -v -c -i en_US -f UTF-8 en_US.UTF-8若提示No such file or directory,先安装语言包再执行。
Windows 客户端
-
TortoiseSVN:
右键 → TortoiseSVN → Settings → General → Language → 选 “English (United States)” 或 “中文(简体,中国)” 并确保系统区域设置已启用 UTF-8(Win10/11:设置 → 时间和语言 → 区域 → 相关设置 → 管理 → 更改系统区域设置 → 勾选 “Beta: 使用 Unicode UTF-8…”)。 -
命令行:
在 Git Bash / PowerShell 里先执行set LC_ALL=en_US.UTF-8 set LANG=en_US.UTF-8然后再运行svn。
完成上述步骤后,再次执行
svn up/svn co,E000022: Can't convert string from 'UTF-8' to native encoding 就不会再出现。