Chinaunix

标题: 过年前最后一个问题.....django的post.get汉字编码的问题 [打印本页]

作者: kc_hxd_jp    时间: 2010-02-11 08:55
标题: 过年前最后一个问题.....django的post.get汉字编码的问题
django中的代码
mkjc = request.POST.get('mkjc',None)
f = open("/tmp/codetest","w"
f.write(mkjc)
f.close()

出现错误....
UnicodeEncodeError at /screen/
'ascii' codec can't encode characters in position 0-4: ordinal not in range(12


django中setting编码LANGUAGE_CODE = 'utf-8'
页面编码也是utf-8
作者: 3227049    时间: 2010-02-11 09:17
django获取的get,post都是unicode,unicode是不能直接写入文件的

from django.utils.encoding import smart_str

mkjc = request.POST.get('mkjc',None)

if mkjc:
    mkjc=smart_str(mkjc)
    f = open("/tmp/codetest","w")
    f.write(mkjc)
    f.close()
作者: kc_hxd_jp    时间: 2010-02-11 09:33
感谢3227049......能写进去了
感觉Linux上的编码好烦啊
作者: 3227049    时间: 2010-02-11 11:18
和linux没关系的,python的unicode对象在任何系统都不能直接写入的

另外,编码是django自己转的,而且不仅是django,大体现在的主流框架,包括一些request解析工具webob,werkzeug之类的,都会把get,post转成unicode




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2