簡體   English   中英

讀取時Python編碼問題,但鍵入時不編碼

[英]Python encoding problem when reading but not when typing

我正在從文本文件中讀取一些字符串。 其中一些字符串有一些“奇怪”的字符,例如“\\ xc3 \\ xa9comiam”。 如果我復制該字符串並將其粘貼到變量中,我可以將其轉換為可讀字符:

string = "\xc3\xa9comiam"
print(string.encode("raw_unicode_escape").decode('utf-8'))
écomiam

但如果我從文件中讀取它,它不起作用:

with open(fn) as f:
       for string in f.readlines():
          print(string.encode("raw_unicode_escape").decode('utf-8'))
\xc3\xa9comiam

似乎解決方案必須非常簡單,但我找不到它。 我能做什么?

謝謝!

那些不是unicode-escape那些 - 就像名字所暗示的那樣,處理Unicode序列,如而不是\\xe9

你擁有的是UTF-8編碼序列。 解碼的方法是將其轉換為bytes序列,然后可以將其解碼為Unicode字符串。

# Let's not shadow the string library
s = "\xc3\xa9comiam"
print(bytes(s, 'latin-1').decode('utf-8'))

'latin-1'技巧是一個骯臟的秘密,它只是將每個字節轉換為具有相同字符代碼的字符。

對於您的文件,您可以在二進制模式下打開它,這樣您就不必將其明確地轉換為bytes ,或者您可以簡單地將相同的轉換應用於您閱讀的字符串。

謝謝大家的幫助,

我想,我已經找到了一個解決方案(不是很優雅,但確實如此)。

print(bytes(tm.strip(), "utf-8").decode("unicode_escape").encode("raw_unicode_escape").decode('utf-8'))

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM