Estou tentando isso desde a manhã.
Minhas sample.txt
choice = u9078u629e
Código:
with open("sample.txt", encoding="utf-8") as f:
for line in f:
print(line)
print("選択" in line)
print(line.encode("utf-8").decode("utf-8"))
print(line.encode().decode("utf-8"))
print(line.encode("utf-8").decode())
print(line.encode().decode("unicode-escape").encode("latin-1").decode("utf-8")) # as suggested.
out:
choice = u9078u629e
False
choice = u9078u629e
choice = u9078u629e
choice = u9078u629e
UnicodeEncodeError: "latin-1" codec can"t encode characters in position 9-10: ordinal not in range(256)
Quando faço isso no ipython qtconsole:
In [29]: "choice = u9078u629e"
Out[29]: "choice = 選択"
Então, a questão é como posso ler o arquivo de texto que contém a string de escape unicode como u9078u629e
(Eu não sei exatamente o que é chamado) e convertê-lo para utf-8 como 選択
?
Respostas:
2 para resposta № 1Se você lê-lo de um arquivo, basta dar a codificação ao abrir:
with open("test.txt", encoding="unicode-escape") as f:
a = f.read()
print(a)
# choice = 選択
com test.txt
contendo:
escolha = u9078u629e
Se você já tivesse seu texto em uma string, poderia convertê-lo assim:
a = "choice = \u9078\u629e"
a.encode().decode("unicode-escape")
# "choice = 選択"