将字节中的日文文本转换为字符串时出错

Error when covnerting japanese text in bytes to string

我正在尝试从 zip 文件中提取 srt:

当我读取 srt 文件时,我得到了一个日语文本文件的字节对象,如下所示:

bov = b'1\r\n00:00:06,000 --> 00:00:12,074\r\n\x8dL\x8d\x90\x8fo\x8de\x82\xf0\x82\xa8\x8dl\x82\xa6\x82\xcc\x95\xfb\x82\xd6\r\n\x82\xa8\x96\xe2\x82\xa2\x8d\x87\x82\xed\x82\xb9\x82\xcd www.OpenSubtitles.org \x82\xdc\x82\xc5\r\n\r\n2\r\n'

sv = bov.decode()

解码报错如下:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8d in position 34: invalid start byte

预期文字如下:

1 00:00:42,521--> 00:00:46,062 嘘の代償はいくらですか?

l.decode(errors="ignore") 给我

'1\r\n00:00:06,000 --> 00:00:12,074\r\nLoel̕\r\n₢킹 www.OpenSubtitles.org ܂\r\n\r\n2\r\n'

您可以尝试以下方法:

bov = b'1\r\n00:00:06,000 --> 00:00:12,074\r\n\x8dL\x8d\x90\x8fo\x8de\x82\xf0\x82\xa8\x8dl\x82\xa6\x82\xcc\x95\xfb\x82\xd6\r\n\x82\xa8\x96\xe2\x82\xa2\x8d\x87\x82\xed\x82\xb9\x82\xcd www.OpenSubtitles.org \x82\xdc\x82\xc5\r\n\r\n2\r\n'
sv = bov.decode('shift_jis_2004')

print(sv)

给出:

1 00:00:06,000 --> 00:00:12,074 広告出稿をお考えの方へ お問い合わせは www.OpenSubtitles.org まで

2

唯一需要做的就是指定正确的抄本,摘自:https://docs.python.org/3/library/codecs.html