docker容器执行svn指令,报错,Can‘t convert string from ‘utf-8‘ to native encoding

当在Docker容器内使用SVN命令遇到中文乱码错误时,本文介绍了一种通过设置环境变量LC_CTYPE为C.UTF-8来解决此问题的方法。此方案不仅适用于代码执行,也适用于直接在命令行使用SVN的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象

docker容器内服务用代码执行svn指令报错,Can’t convert string from ‘utf-8’ to native encoding

思考

能不能通过代码内对编码处理解决,但是最终发现,直接在命令行执行svn指令也同样报错,故问题应该不在代码内,应该是环境问题

问题重现

  1. 提交内容包含中文时,使用svn log
  2. 修改文件包含中文时,使用svn diff

解决

  1. 在docker-compose所在目录执行
    sudo docker-compose exec 【服务名】 svn diff 【svn远程地址】 --revision 【旧版本】:【新版本】 --username 【用户名】 --password 【密码】 --no-auth-cache
    发现报错

  2. 查看容器内locale有哪些字符集
    sudo docker-compose exec 【服务名】 locale -a

  3. 我本地看了下,有utf-8的,只有C.UTF-8,考虑到部署配置通用性,就用C.UTF-8

  4. 修改docker-compose,添加环境变量

environment:
  - LC_CTYPE=C.UTF-8
  1. sudo docker-compose down
  2. sudo docker-compose up -d

其他

非docker容器的话

  1. 直接执行 locale -a 即可查看已安装字符集
  2. 修改字符集
  • 临时修改可使用export LC_CTYPE=C.UTF-8
  • 永久修改可修改文件 /etc/sysconfig/i18n 添加LC_CTYPE=C.UTF-8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值