gpt4 book ai didi

python - 未烘烤的mojibake

转载 作者:行者123 更新时间:2023-11-28 22:49:12 25 4
gpt4 key购买 nike

当您有错误解码的字符时,您如何识别原始字符串的可能候选者?

Ä×èÈÄÄî▒è¤ô_üiâAâjâüâpâXüj_10òb.png

我知道这个图像文件名应该是一些日文字符。但是由于对 urllib 引用/取消引用、编码和解码 iso8859-1、utf8 的各种猜测,我无法取消并获取原始文件名。

腐败是可逆的吗?

最佳答案

您可以使用 chardet(使用 pip 安装):

import chardet

your_str = "Ä×èÈÄÄî▒è¤ô_üiâAâjâüâpâXüj_10òb"
detected_encoding = chardet.detect(your_str)["encoding"]

try:
correct_str = your_str.decode(detected_encoding)
except UnicodeDecodeError:
print("Could not estimate encoding")

结果:时间试験観点(アニミパス)_10秒(不知道这是否正确)

对于 Python 3(编码为 utf8 的源文件):

import chardet
import codecs

falsely_decoded_str = "Ä×èÈÄÄî¦è¤ô_üiâAâjâüâpâXüj_10òb"

try:
encoded_str = falsely_decoded_str.encode("cp850")
except UnicodeEncodeError:
print("could not encode falsely decoded string")
encoded_str = None

if encoded_str:
detected_encoding = chardet.detect(encoded_str)["encoding"]

try:
correct_str = encoded_str.decode(detected_encoding)
except UnicodeEncodeError:
print("could not decode encoded_str as %s" % detected_encoding)

with codecs.open("output.txt", "w", "utf-8-sig") as out:
out.write(correct_str)

总结:

>>> s = 'Ä×èÈÄÄî▒è¤ô_üiâAâjâüâpâXüj_10òb.png'
>>> s.encode('cp850').decode('shift-jis')
'時間試験観点(アニメパス)_10秒.png'

关于python - 未烘烤的mojibake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com