python django 中文问题

在使用Django开发的admin工具中,为支持中文显示和编辑,遇到'ascii' codec解码错误。通过调试发现错误源于对query_string的处理。尝试了使用decode("gbk").encode('utf-8')未果,最终采用try...catch...避免错误打印。了解到Python的Unicode处理和编码方式,通过decode("gbk","ignore").encode("ascii","ignore")解决了报错问题,但query_string内容丢失。采用%r%r格式化输出解决了问题,同时加深了对Python编码的理解。" 137670056,10727098,"Python TypeError错误详解:Int object, Unhashable Type, Unsupported Operand

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前项目有一个用django开发的简单的admin tool。 现在由于 要加入对中国客户的支持, 所以要有显示与编辑中文。 

 

由于是直接操作数据库, 所以显示没有问题, 但是在编辑的时候, 出现 'ascii' codec can't decode byte 0xe7 in position 20: ordinal not in range(128)的错误。

 

于是来debug这个问题, django提供了丰富的debug trace。 看到是一个打log的地方出现的问题。

说是在对query_string进行decode的时候出现错误。

 

开始在网上google, 有的说是用decode("gbk").encode('utf-8'), 发现不管用

为了 先能work, 用了try...catch...的机制, 如果出现错误就不打印log.

 

下面是慢慢的找原因了。

其中 Python Unicode与中文处理(文摘) 对python的unicode , utf-8及其他讲解的不错。

 

然后看到说decode 与encode有第二个参数可以对error进行不同的处理。

于是尝试了一下decode("gbk","ignore").encode("ascii","ignore")发现不报错了, 不过具体的query_string就看不到了。

 

由于 python默认的编码方式是unicode, 所以在处理string(%s)时候会自动的用unicode来decode, 如果我们指定用自然字符 来处理不知道, 可不可以 。

尝试了一下

 

就可以了。

 

问题解决。

 

对python 的编码方式也多了一点了解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值