首页 > 解决方案 > 将字节中的日文文本转换为字符串时出错

问题描述

我正在尝试从 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'

标签: pythonpython-3.xstringunicodebyte

解决方案


您可以尝试以下方法:

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


推荐阅读