之前项目有一个用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