python3 django html 中文乱码_django中文乱码及中文报错问题

在使用Django框架结合Python和MySQL处理中文时,可能会遇到编码问题导致中文乱码或错误。解决方法包括:1) 在settings.py中设置`LANGUAGE_CODE`和`TIME_ZONE`为中文和上海时区;2) 确保HTML文件以UTF-8编码并声明字符集;3) MySQL数据库和表使用UTF-8编码。如果问题依然存在,可能需要修改MySQLdb/cursors.py文件中涉及编码的部分。
摘要由CSDN通过智能技术生成

django是一个不错的WEB开源框架。今天测试,发现有些页面中文乱码,肯定是编码哪儿出了问题。django配置要修改settings.

1

2

LANGUAGE_CODE = 'zh-cn'

TIME_ZONE = 'Asia/Shanghai'

还得注意像django模块中的htm,html文件本身编码是不是utf8.

No related posts.

中文报错:

用python + django

+mod_python +mysql 来写程序 , 曾经我被中文编码也搞昏狠了,

看了不下N天的资料文档,google被我翻烂了,不管是中文的还是英文的 ;

后来决定统一编码:

1:python 写的程序, 统一用

utf-8 ,以及重新载入utf-8

#!/usr/bin/python

#coding=utf-8

import sys,os

reload(sys)

sys.setdefaultencoding('utf8')

2: django 的模板,

也就是html程序

统一保存格式为utf-8 , 并且html 申明

http-equiv="Content-Type" content="text/html;

charset=utf-8">

3:Mysql

建立数据库,数据库使用UTF-8

自此问题应该能全部解决 ,

如还出现编码错误,

修改/usr/lib/python2.4/site-packages/MySQLdb/cursors.py

原来是:

charset =

db.character_set_name()

query =

query.encode(charset)

修改为:

query =

query.encode('utf-8')

去掉charset那行

!

//==================================================================================================

总结下我提的那问题:

我前面也是按照1-3那样来做的,

但是再提交中文表单的时候还是出现了错误,

UnicodeEncodeError

at /

'latin-1' codec

can't encode characters ...

然后在网上搜索了很多资料,他们说的基本就是. (搜索的资料再多,但都是同一个人写的, 到处转载来转载去的. 呵呵)

网上说的都是修改cursors.py

127行 , 加上 char="utf-8" ,然后再146行前面再加上charset = char ,修改后的片断为:

def execute(self,

query, char="utf-8", args=None):  //127行

.....

charset = char

query =

query.encode(charset)

这样改动是能解决中文问题,

但我在实际中,

因为我在后面要用到session , 执行了manage.py syncdb 生成Session要用的数据库, ..

然后写数据库的时候又开始报错,

encode() argument 1

must be string, not list

Request Method:

GET

Exception Type:

TypeError

Exception Value:

encode() argument 1 must be string, not list

Exception Location:

/usr/lib/python2.4/site-packages/MySQLdb/

cursors.py in

execute, line 146

没人帮我解决问题, 自己解决了..

没有用网上说的,

我直接修改默认的cursors.py

里面的 query = query.encode('utf-8')

问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值