SVN检出代码时德语变音字符转换异常导致编译报错问题求助
SVN检出德语变音字符乱码问题解决方案
1 校验仓库原始文件编码
首先排除仓库端存储异常,执行以下操作:
- 从同事正常的本地副本中取含德语变音字符的文件,用文本编辑器确认编码与字符显示正常
- 本地执行命令
svn cat <仓库对应文件的远端路径> > test_tmp.txt,直接拉取仓库文件内容写入临时文件,查看该临时文件的字符是否正常- 若临时文件字符正常,说明是SVN检出到本地的转码逻辑出错
- 若临时文件字符乱码,说明本地SVN客户端的输出编码配置异常
2 修正SVN客户端全局编码配置
Windows系统下SVN默认配置文件路径为C:\Users\<你的用户名>\AppData\Roaming\Subversion\config,打开文件修改以下参数:
- 找到
[miscellany]区块,取消log-encoding行的注释,修改为log-encoding = utf-8 - 同区块下新增参数
encoding = utf-8 - 保存配置后,结束所有SVN相关进程(包含TortoiseSVN的后台进程),重新执行检出操作
3 修正TortoiseSVN专属编码配置
若使用TortoiseSVN客户端,需额外检查专属配置:
- 右键唤出TortoiseSVN菜单,选择「设置」
- 找到「高级」选项页,修改以下参数:
Utf8Files参数值设为*,表示所有文件默认按UTF-8处理LogFileEncoding参数值设为utf-8
4 编译前适配特殊编码场景
重新检出后若字符仍为乱码,执行以下验证:
用Notepad++打开异常文件,选择「编码 -> 编码字符集 -> 西欧 -> ISO-8859-1」,若此时德语变音字符正常显示,说明仓库中存储的源文件实际为ISO-8859-1编码,需二选一解决:
- 批量将所有源文件转码为UTF-8后再编译
- 在编译工具的参数中指定源码编码为ISO-8859-1
5 额外排查项
- 确认本地SVN客户端版本与同事使用的版本一致,避免跨版本编码兼容问题
- 排查本地是否安装了编码转换工具、流量代理工具,此类工具可能篡改SVN传输过程中的字节流
内容的提问来源于stack exchange,提问作者EAzevedo
相关产品推荐
相关产品推荐

