python3.0 中文乱码问题

sharke118 2011-11-11 09:22:59
import sys
print(sys.getdefaultencoding())
s = input(":")
b=s.encode('utf-8')
print(b.decode('utf-8'))

用键盘输入中文字符 最后打印出来的是乱码 怎样使 encode decode 过程后的输出是正常的中文?系统默认的编码是utf-8
...全文
372 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_NBFA 2011-12-04
  • 打赏
  • 举报
回复
我倒好奇3.2都出来了,LZ还用作为过渡测试版的3.0
JoeBlackzqq 2011-12-04
  • 打赏
  • 举报
回复
我用你的代码,没有任何问题。我是windows下DOS窗口中运行的:
E:\Program\Linux_Share\python>type a.py
import sys
print(sys.getdefaultencoding())
s = input(":")
b=s.encode('utf-8')
print(b.decode('utf-8'))

E:\Program\Linux_Share\python>a.py
utf-8
:你好吗,我是明天的太阳
你好吗,我是明天的太阳

E:\Program\Linux_Share\python>
gelinsipan 2011-11-29
  • 打赏
  • 举报
回复
楼主要写的程序是网络程序,那么就一定要规定客户端用什么编码发送字符串,这样你才知道怎么解码。建议使用UTF-8编码。

另外,楼主在XP下输入中文测试,我猜可能编码是GBK,所以楼主试试看先把GBK转成unicode,然后再转成UTF-8,如下:

unicode = input.decode("GBK")
utf8 = unicode.encode("utf-8")
print utf8
o_yale_o 2011-11-21
  • 打赏
  • 举报
回复
3.0还可以这样:

你好='Hello'
print(你好)

formylove2 2011-11-21
  • 打赏
  • 举报
回复
试试
# -*- coding: gbk -*-
坚强的豁着 2011-11-20
  • 打赏
  • 举报
回复
最开着加一个
# coding=UTF-8
试试
iambic 2011-11-11
  • 打赏
  • 举报
回复
你这encode了一遍又decode了一遍,不是多此一举吗。你先把原始的s的repr打出来看下。
sharke118 2011-11-11
  • 打赏
  • 举报
回复
求解答 谢谢
sharke118 2011-11-11
  • 打赏
  • 举报
回复
这个是在 xp 系统下运行的 在 socket 网络程序里面 客户端要以 bytes 的格式往服务器发送数据 服务器要打印这个客户端发过来的数据 要 将收到的 bytes 转换成 str 所以要上面的转换 为了做测试 我把它简化了
iambic 2011-11-11
  • 打赏
  • 举报
回复
为什么要encode/decode?
阿小信 2011-11-11
  • 打赏
  • 举报
回复
s = input(":")
print(s.decode('gbk'))
试试。
阿小信 2011-11-11
  • 打赏
  • 举报
回复
sys.getdefaultencoding()是ascii编码就能正常打印
sharke118 2011-11-11
  • 打赏
  • 举报
回复
'我是�'
iambic 2011-11-11
  • 打赏
  • 举报
回复
repr
sharke118 2011-11-11
  • 打赏
  • 举报
回复
import sys
print(sys.getdefaultencoding())
s = input(":")
print(s)

打印出来的结果是:
utf-8
:我是谁
我是�

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧