写在前面
- Python Web项目开发过程中遇到的重大Bug,项目已进行80%,Deadline最迟当天,,,
- 历史版本发布无异常,可能是安装前端软件导致编码等环境异常
- 尝试各种方法、几近抓狂近8小时
问题详情
- Flask Web项目,包含中文注释、查询Oracle数据库返回字段包含中文
- 无效尝试总结如下:
- 重启发布,无效
- 去掉代码中的所有中文,无效
- 设置环境变量LANG,无效
export LANG="en_US.UTF-8"
- 安装 supervisord
- 未有效解决问题
- 略去若干
- 解决办法
- python脚本添加如下代码:
import os os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
- python脚本添加如下代码:
问题原因
- 猜测可能是查询结果包含中文导致
- 在Oracle客户端向服务器端提交SQL语句时,Oracle客户端根据NLS_LANG和数据库字符集,对从应用程序接传送过来的字符串编码进行转换处理。
- 如果NLS_LANG与数据库字符集相同,不作转换,否则要转换成数据库字符集并传送到服务器。
- 服务器在接收到字符串编码之后,对于普通的CHAR或VARCHAR2类型,直接存储;
- 对于NCHAR或NVARCHAR2类型,服务器端将其转换为国家字符集再存储。
- 参考文章

在PythonWeb项目开发中,接近截止日期时遇到重大Bug,表现为Flask项目中中文注释及查询Oracle数据库返回的中文字段出现乱码。经过多种尝试,最终通过在python脚本中添加特定代码解决了乱码问题。
1166

被折叠的 条评论
为什么被折叠?



