2010-01-18 39 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""

相關問題