解决Python执行Hexo发布命令的编码问题
解决Python执行Hexo发布命令的编码问题
在开发我的技术博客过程中,遇到了一个Python执行Hexo发布命令时的编码问题。本文将记录问题现象、分析过程和最终解决方案。
问题描述
当使用Python的subprocess模块执行Hexo发布命令时:
1 | import subprocess |
会遇到以下编码错误:
1 | UnicodeDecodeError: 'utf-8' codec can't decode byte 0xXX in position YY |
问题分析
经过排查发现:
- Hexo输出中包含特殊字符(如表情符号或特定语言字符)
- 服务器环境默认编码与本地开发环境不同
- Python的subprocess默认使用系统编码处理输出
解决方案
1. 显式指定编码
1 | result = subprocess.run(['hexo', 'deploy'], |
2. 更新rsync参数(项目信息中已记录)
在publish.sh中添加编码转换参数:
1 | rsync -avz --delete --iconv=utf-8 public/ user@server:path/to/blog |
3. 环境变量设置
在Python脚本开头添加:
1 | import os |
验证结果
实施以上修改后:
- Python脚本能正确处理Hexo输出的所有字符
- 博客内容完整传输,无乱码问题
- 发布流程稳定可靠
技术要点:跨平台开发时,显式指定编码比依赖系统默认更可靠
后续改进
- 将编码配置加入项目设置
- 创建发布日志记录系统
- 增加异常处理重试机制
1 | // 项目配置更新 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Lioe Squieu | Cocos休闲游戏开发!




