[問題] 中文編碼問題

作者: Czero (悠閒)   2015-07-15 21:44:07
使用python3~
假設我取得一個中文已經編碼過的字串
d='\\xab\\xa2\\xc5o'
print(d)
我想要印出原始中文該如何印呢?
原先想法以為是print(('b"'+d+'"').decode())
但似乎沒這種寫法XD
請教各位大大~~
作者: ccwang002 (亮)   2015-07-15 22:18:00
Py3 字串跟 bytes 是很明確的,d 應該要是 bytesd = b'\xab\xa2\xc5o'; d.decode('big5') # 哈囉如果 d 是從別的字串 encode 完只複製它的值但是 str就要用一個特別的編碼 latin-1 (在 Py 2<->3 常用)d = '\xab\xa2\xc5o'.encode('latin1').decode('big5')但你今天是 '\\xab' 這個跟 '\xab' 意思完全不一樣s_crapped ='\\xab...' 我只有想到很 hack 的做法eval('b"%s"' % s_crapped).decode('big5')
作者: uranusjr (←這人是超級笨蛋)   2015-07-15 22:55:00
有一個叫 string_escape 的編碼可以用啊, Python 3 要用 unicode_escape
作者: Czero (悠閒)   2015-07-15 23:12:00
喔喔感謝上面兩位回覆, c大兩種假設基本上都會碰到...不過eval這方式還真特別,裡面這樣表達是指s_crapped會替換%s嗎?而這樣會解決\\問題?!有點神奇
作者: ccwang002 (亮)   2015-07-15 23:29:00
會變成 eval('b"\\xab..."') 但 eval 一般少用

Links booklink

Contact Us: admin [ a t ] ucptt.com