【发布时间】:2020-12-15 19:22:28
【问题描述】:
我找到了一个修复我的 mojibake 的站点,here,它使用了 python 包 ftfy。我尝试重现给定的步骤,尽管它似乎在运行它给我的步骤之前预先转换了字符串。
我要修复的字符串是 EvðŸ’👸ðŸ»,尽管该网站似乎在尝试使用与下面相同的步骤修复它之前将其预先转换为 EvðŸâ\x80\x99Â\x9dðŸâ\x80\x98¸ðŸÂ\x8f»。
我的问题是,在运行 fix_broken_unicode 函数之前,我怎样才能让我的字符串处于与站点相同的状态,以避免我面临的错误?
运行我的脚本时,(可能是因为我没有进行预转换)我收到:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 3-4: ordinal not in range(256)
上述网站的源代码可以在:https://github.com/simonw/ftfy-web/blob/master/ftfy_app.py 找到,虽然因为我主要是 C++ 开发人员,所以我看不懂。
我的脚本:
import ftfy.bad_codecs
def fix_broken_unicode(string):
string = string.encode('latin-1')
string = string.decode('utf-8')
string = string.encode('sloppy-windows-1252')
string = string.decode('utf-8')
return string
print(fix_broken_unicode("EvðŸ’👸ðŸ»"))
自回答以来的更新:
我的输入:"EvðŸ’👸ðŸ»",预期结果:Ev????????????
【问题讨论】:
标签: python unicode character-encoding ftfy