python - 将字节中的日文文本转换为字符串时出错
问题描述
我正在尝试从 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
推荐阅读
- javascript - 有没有办法在使用 Three.js 渲染的 3D 图像中插入 html 元素?
- jqgrid - JQGrid 无法隔离跨 jQuery ui-tabs 的更改。编辑行时,其他选项卡上的网格也会更新
- kubernetes - 如何将 pod 信息作为环境变量公开给 Spring Cloud Dataflow 任务的容器
- citus - 增加 Citus 中的碎片
- heroku - 当我在 heroku 中托管机器人时,为什么 avatar_url discord.py 不起作用?
- reactjs - 为什么我在减速器中使用状态自定义类方法得到意外结果?
- python - 简化暴力破解程序并添加功能
- vb.net - Linq VB.net 到 PowerShell 5.1
- react-native - 与更新本机导航中的参数混淆
- javascript - 变量设置如何与等待一起工作?