2010-01-18 37 views
2
print "4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf".decode('base64')#no 

感谢这个字符串'base64'或'utf-8'的编码是什么?我怎样才能得到它可读


如果我有 '4-12个英文字母,数字和下划线'

我怎样才能得到字符串'4-12 \ u4e2a \ u82f1 \ u6587 \ u5b57 \ u6bcd \ u3001 \ u6570 \ u5b57 \ u548c \ u4e0b \ u5212 \ u7ebf'

print '4-12个英文字母、数字和下划线'.decode('what')# 

我写:

print u'4-12个英文字母、数字和下划线'.encode('unicode-escape') 

其打印

4-12\xb8\xf6\xd3\xa2\xce\xc4\xd7\xd6\xc4\xb8\xa1\xa2\xca\xfd\xd7\xd6\xba\xcd\xcf\xc2\xbb\xae\xcf\xdf 

不是字符串“4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf

print u'4-12个英文字母、数字和下划线'.decode('utf-8').encode('unicode-escape') 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "encodings\utf_8.pyo", line 16, in decode 
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-27: ordinal not in range(128) 

没有 'U' 也是错误:

print '4-12个英文字母、数字和下划线'.decode('utf-8').encode('unicode-escape') 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "encodings\utf_8.pyo", line 16, in decode 
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 4: unexpected code byte 

它的确定,由于

>>> print '4-12个英文字母、数字和下划线'.decode('gb2312').encode('unicode-escape') 
4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf 
+0

我不知道它是什么,但它不是base64。 – Joe 2010-01-18 03:27:34

+1

\ u = unicode代码点也许? – 2010-01-18 03:28:15

+0

尝试一种新的发布方式,这样它不会被关闭吗? http://stackoverflow.com/questions/2083389/how-do-i-break-this-script-closed – epascarello 2010-01-18 04:22:08

回答

0

你最后的评论:

>>> print '4-12个英文字母、数字和下划线'.decode('gb2312').encode('unicode-escape') 

如果源文件保存在GB2312编码只会工作。确保你在文件顶部声明,然后你可以使用Unicode字符串:

# coding: gb2312 
print u'4-12个英文字母、数字和下划线'.encode('unicode-escape') 
1

这是一个Unicode表示。尝试.decode('unicode-escape')

编辑:

对于第二个解码,你用什么取决于你的终端/主机的设置。 'utf-8'是一个理智的起点,然后使用'unicode-escape'进行编码以获得Unicode转义序列。

+0

谢谢,但不打印正确的字符串。 – zjm1126 2010-01-18 05:53:44

+0

Aaaand ...它打印的是什么* – 2010-01-18 06:00:06

+0

它打印4-12 xb8 xf6 xd3 xa2 xce xc4 xd7 xd6 xc4 xb8 xa1 xa2 xca xfd xd7 xd6 xba xcd xcf xc2 xbb \ xae \ xcf \ xdf' – zjm1126 2010-01-18 06:32:43

1

它的编码为unicode的蟒蛇文字:

>>> print u"4-12\u4e2a\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u548c\u4e0b\u5212\u7ebf" 
4-12个英文字母、数字和下划线 
+0

关闭,但没有。它实际上是一个str文字,包含一个unicode repr。 – 2010-01-18 03:29:40

+0

@Ignacio:好吧,它写的是一个str文字,它被解码为base64。显然这是不正确的,谁知道它是否应该是一个字面值。也许只需要添加一个'u'来使它成为一个unicode文字就是OP正在寻找的东西。 – sth 2010-01-18 03:38:29

1

该字符串表示, “4-12个英文字母,数字和下划线”,通过只是一个JavaScript解释器中键入它(在这种情况下, WebKit检查器)。

它似乎没有任何base64编码信息。

还有什么你想知道的吗?

1

我想这是python 3.x表示unicode字符串。

在python 2.x中,你需要在unicode字符串开始时使用u""

相关问题