→ ccwang002: Py3 字串跟 bytes 是很明確的,d 應該要是 bytes 07/15 22:18
→ ccwang002: d = b'\xab\xa2\xc5o'; d.decode('big5') # 哈囉 07/15 22:18
→ ccwang002: 如果 d 是從別的字串 encode 完只複製它的值但是 str 07/15 22:27
→ ccwang002: 就要用一個特別的編碼 latin-1 (在 Py 2<->3 常用) 07/15 22:27
→ ccwang002: d = '\xab\xa2\xc5o'.encode('latin1').decode('big5') 07/15 22:28
→ ccwang002: 但你今天是 '\\xab' 這個跟 '\xab' 意思完全不一樣 07/15 22:30
→ ccwang002: s_crapped ='\\xab...' 我只有想到很 hack 的做法 07/15 22:41
→ ccwang002: eval('b"%s"' % s_crapped).decode('big5') 07/15 22:41
→ uranusjr: 有一個叫 string_escape 的編碼可以用 07/15 22:55
→ uranusjr: 啊, Python 3 要用 unicode_escape 07/15 22:57
→ Czero: 喔喔感謝上面兩位回覆, c大兩種假設基本上都會碰到... 07/15 23:12
→ Czero: 不過eval這方式還真特別,裡面這樣表達是指s_crapped會替換 07/15 23:27
→ Czero: %s嗎?而這樣會解決\\問題?!有點神奇 07/15 23:28
→ ccwang002: 會變成 eval('b"\\xab..."') 但 eval 一般少用 07/15 23:29