python 用shelve读取.dat文件中文乱码问题

import shelve
Database = shelve.open('c:\\test.dat')
Database['name']='测试'
Database['name']

得到的结果是'\xb2\xe2\xca\xd4,并不是我想要的中文,求助
用Print打印也是一样的,目前没有分可给,只能感谢各位的帮忙

    “得到的结果是'\xb2\xe2\xca\xd4,并不是我想要的中文” =》其实,你看到的'\xb2\xe2\xca\xd4‘,就已经是你想要的中文了。只不过是GBK编码的,所以显示出来的是'测试'这两个中文字符所对应的GBK编码的内部的值而已

    如果你想要显示出中文字符,而非内部值的话,可以,先将其转换为Unicode,就可以看到中文了:

    decodedName = Database['name'].decode("GBK")
    print "decodedName=",decodedName #decodedName= æµ‹è¯•


    注:

    1.不要用那个IDLE,不好用,容易让你误解。

    2.在直接在cmd下测试即可。

    更多的,极其详尽的解释,我专门为你写了教程了。你一看就懂了:

    【整理】Python中实际上已经得到了正确的Unicode或某种编码的字符,但是看起来或打印出来却是乱码

    (google搜标题即可找到我的帖子了)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-11
呵呵。你得到的结果是个直接就是测试的文本呀。只是dos命令行一般显示gbk或者ucs的,你把4个字节用print打印就可以看出来是测试两个字符了。
第2个回答  2013-02-19
字符编码问题,理论是print是可以直接打印的。如果不行则转换合适编码
print Database['name'].decode('gbk')
相似回答