FastAPI踩坑----加载.env文件中的变量,有中文注释或者中文字符串报错
2020-07-18 05:01
381 查看
‘gbk’ codec can’t decode byte 0xad in position 178: illegal multibyte sequence
问题原因:
python-dotenv读取.env文件时,没有使用utf-8编码
解决办法:
通过查看源代码,我的办法是重写DoEnv的的——get_stream方法,在运行时加载,覆盖原来的代码
以下是我的实现代码:
logger = logging.getLogger(__name__) def my_get_stream(self): """重写python-dotenv读取文件的方法,使用utf-8,支持读取中文""" if isinstance(self.dotenv_path, StringIO): yield self.dotenv_path elif os.path.isfile(self.dotenv_path): with io.open(self.dotenv_path, encoding='utf-8') as stream: yield stream else: if self.verbose: logger.warning("File doesn't exist %s", self.dotenv_path) yield StringIO('') DotEnv._get_stream = contextmanager(my_get_stream)
ps:emmm。。。总算可以在配置文件中写中文了,别问我为什么写中文。。。哈哈
相关文章推荐
- 用加载字符串配置文件的方式解决cocos2D-x项目中文乱码问题
- python 调用系统命令,并将输出重定向,输出其结果至文件或者字符串变量
- 【Python】注释、中文支持、变量、标识符、关键字、字符串
- source命令 导入.sql文件时,中文乱码 或者是注释乱码
- java 中文和unicode字符串互相转换(文件需要保存为gbk2312或者asci格式)
- 为什么python文件前边必须写上#!/usr/bin/python #;或者#!/usr/bin/ env python -*- coding: UTF-8 -*-这两段注释
- 手机游戏中读取中文字符串文件的封装类
- 修改Xcode自动生成的文件注释来导出API文档
- 别人的项目导入到自己的Eclipse中时常常会出现JAVA文件的中文注释变成乱码的情况
- javac 可以生成Java文件,但是找不到,或者无法加载主类
- 对一批文件进行中文分词,分词后输出字符串,示例代码
- 修改Xcode自动生成的文件注释来导出API文档
- C# 加载xml文档文件及加载xml字符串
- Linux静态链接(库)、动态链接(库)、可执行文件加载相关问题(创建、选项、环境变量等)
- Spring使用环境变量控制配置文件加载
- Linux删除中文乱码文件或者目录
- 解决MyEclipse编写properties文件时,中文注释显示为Unicode码问题
- PHP在函数中使用static变量来加载和设置配置文件
- spring加载一个或者多个properties配置文件方法
- Oracle导入带中文的sql文件,报ORA-01756: 引号内的字符串没有正确结束