Django 使用MYSQL数据库 Latin1
来源:互联网 发布:派生表sql 编辑:程序博客网 时间:2024/06/05 19:45
公司mysql统一用latin1的编码,真是叫人苦不堪言。Django用默认UTF8访问MYSQL数据库。在操作数据库时,不管你怎么转码,最终写到数据库里的中文都是乱码。在网上找了很久,也没解决这个问题。
后来看了一个DJANGO的MYSQL操作的源码,发现了一些问题 先是/django/db/backends/mysql/base.py 文件的 257 到263行
关键在这两行2def _cursor(self):
261 'charset': 'utf8',
262 'use_unicode': True,
这说明,操作数据库用的是通用编码utf8 而且是硬编码进去的。如果我也硬编码改这里的话,以后有UTF8的库的话,就糟糕了。所以要想办法将这两项写到配置文件里。所以选注释掉这两行。在settings_dict = self.settings_dict 这行下面添加如下的代码
修改settings.py 加入如下两行
但这样改了之后,会找不到DATABASE_CHARSET和USE_UNICODE 这说明在配置转进来之前做了筛选,再继续看这个文件/django/db/__init__.py 会看到这样的代码
看得出来,这行是在初始化数据库对象,把settings.py里的一些设置传了进去。那么,我们在这里把刚刚添加的两个设置放进来就行了
'DATABASE_CHARSET':settings.DATABASE_CHARSET,
'USE_UNICODE':settings.USE_UNICODE,
保存,重启下APACHE 。再运行原来的程序,成功向数据库中写入数据,中文不再是编码。
但是,这个也不能说是完全解决,在操作数据库时,会报一些异常 UnicodeDecodeError、UnicodeEncodeError和DjangoUnicodeDecodeError 把它们抓住后忽略掉就行了
- Django 使用MYSQL数据库 Latin1
- mysql数据库latin1转utf8
- Django使用mysql数据库
- Django使用MySQL数据库
- Django使用mysql数据库
- Django使用MySQL数据库
- Django-使用MySQL数据库
- django使用mysql数据库
- MYSQL数据库由latin1转换为utf8
- MySQL数据库Latin1转utf8编码
- Django设置使用Mysql数据库
- MySQL数据库utf8表存储latin1乱码字符转换
- mysql 导入导出数据库中文乱码问题 latin1 utf8 utf8_unicode_ci
- 在django中使用 mysql 数据库
- 使用Django的models创建mysql数据库
- django操作mysql数据库&models的使用
- Django使用Mysql时数据库配置
- MySQL基础知识---------Latin1
- dbcp配置--官方文档中文版本
- Android JNI实例
- 使用CFE加载vxWorks
- 单例模式
- FFMPEG 使用手册
- Django 使用MYSQL数据库 Latin1
- 大中型网站如何推行SEO(转)
- HDU1727——字符串处理
- 常用查询网站
- 清理Ubuntu拉圾及启动项
- HDU1804——字符串处理
- 代理模式
- 嵌入式Linux内核优化裁剪
- 当设备空闲时,如何得到用户活动通知?