核心是统一客户端、服务端、文件三者为UTF-8编码:①TortoiseSVN设置中勾选“assume UTF-8 encoding for log messages”并升级至1.14+;②修改tortoisesvn.conf的locale为zh_cn.utf-8;③设置文件属性svn:eol-style native和svn:mime-type "text/plain;charset=utf-8";④Linux下确保LANG=en_US.UTF-8,svnserve启用缓存。

核心是让客户端、服务端、文件本身三者统一用 UTF-8 编码,而不是临时转码或打补丁。
确认并统一 TortoiseSVN 的日志编码设置
TortoiseSVN 默认按系统 ANSI(如 GBK)解析日志,但现代 SVN 仓库普遍用 UTF-8 存储。需主动启用 UTF-8 解析:
- 打开 TortoiseSVN → Settings → General,勾选 Assume UTF-8 encoding for log messages
- 确保使用 TortoiseSVN 1.14 或更高版本(旧版对 UTF-8 日志支持不完整)
- 提交时,在右键 → “SVN Commit…” 对话框中,手动检查输入框右下角是否显示“UTF-8”;若无,可先在 Notepad++ 中以 UTF-8 编码编辑日志,再复制粘贴
检查并修正 TortoiseSVN 本地配置文件
汉化后乱码常因 locale 设置未绑定 UTF-8:
- 编辑 C:\ProgramData\TortoiseSVN\TortoiseSVN.conf
- 找到 locale= 行,改为:
locale=zh_cn.utf-8(简体)或locale=zh_tw.utf-8(繁体) - 重启资源管理器或注销重登录使配置生效
验证并约束 SVN 仓库的文件属性
乱码不仅出现在日志,也常因文件本身编码或换行符不一致引发:
- 对文本类文件(.txt、.java、.xml 等),设置自动属性:
svn propset svn:eol-style native 文件名svn propset svn:mime-type "text/plain;charset=utf-8" 文件名 - 批量设置可在项目根目录执行:
svn propset svn:mime-type "text/plain;charset=utf-8" --recursive *.java - 若文件含 Windows 换行符(CRLF),而服务器期望 LF,可用
dos2unix转换后再提交
排查服务端与系统环境兼容性
尤其在 Linux 下使用 TortoiseSVN(如通过 WSL 或跨平台协作)时:
- Linux 宿主系统需确保
LANG和LC_ALL为 UTF-8,例如:export LANG=en_US.UTF-8,并写入~/.bashrc - 若用 svnserve,检查 svnserve.conf 中未禁用缓存:
确认enable-auth-cache = yes(避免旧 GBK 缓存干扰) - Apache + mod_dav_svn 方式部署时,需在 httpd.conf 中添加:
AddDefaultCharset UTF-8

















