1

ftfy用来修复UTF-8显示为的损坏编码CP1252并将其转换为UTF-8西里尔字母,但我发现有些字母无法修复。

我有一个字符串Ð'010СС199,我将其转换为字节并定义对b"\xc3\x90'010\xc3\x90\xc2\xa1\xc3\x90\xc2\xa1199",其中:

\xc3\x90' -> \xd0\x92 -> Cyrillic В
\xc3\x90\xc2\xa1\ -> \xd0\xa1 -> cyrillic С

如您所见,Ð'长度为 2。ord在这种情况下不起作用。

为了使用slice我必须知道在哪里startend

Translate在这里也行不通。

以前我使用过简单的字符串替换,但现在我想改进我的方法并排除错误。

原始Ð'010СС199-> 转换 -> 输出В010СС199

编辑:

    str = "Ð'010СС199"
    str_to_bytes = str.encode("UTF-8")
    print(str_to_bytes)
    # UTF-8 bytes
    # \xc3\x90\xc2\xa0 : \xd0\xa0 -> cyrillic Р
    # \xc3\x90\xc2\xa1 : \xd0\xa1 -> cyrillic С
    # \xc3\x90\xe2\x80\x94' : \xd0\x97 -> cyrillic З
    # \xc3\x90' : \xd0\x92 -> Cyrillic В
    test_str = b"\xc3\x90'010\xc3\x90\xc2\xa1\xc3\x90\xc2\xa1199"
    t1 = test_str.replace(b'\xc3\x90\xc2\xa1', b'\xd0\xa1')
    print(t1)
    dict_cyr = {"Ð'": "P",
                "С":"C"}
    t2 = test_str.translate(test_str)
    print(t2)

我可以解释我是如何收到结果的。1. 我用的是 2cyr.com 解码器。但即使在某些情况下也失败了。2. 我有一个手动翻译的字符串,所以我比较了它们,并在 UTF-8 图表的帮助下定义了哪个字节对应于西里尔字母。

4

1 回答 1

2
于 2019-02-11T13:14:11.220 回答