将Windows-1252字幕文件转换为utf-8

问题描述 投票:0回答:2

我正在Ubuntu机器上通过VLC播放器下载塞尔维亚语/波斯尼亚语/克罗地亚语字幕,并且必须不断手动将æ,è和ð等字符更改为ć,č和đ,以便播放器可以正确渲染它们。我想做一个可以为我做的python3函数,但是我迷上了理解字符串编码和解码的方法。

通过chardata.detect,我发现VLC播放器下载的.srt文件的编码为Windows-1252。所以现在,我做这样的事情:

import codecs

f = codecs.open('my_file.srt', 'r', encoding='Windows-1252')
data = f.read()
data_utf8 = data.encode('utf-8')
f.close()

事实是,当我在终端打印data变量的内容时,我可能会得到一个这样的片段:obožavam vaše。但是,当我在终端打印data-utf8变量的内容时,该片段现在看起来像这样:obo\xc5\xbeavam va\xc5\xa1e。这不是我所期望的。

此外,当我现在要将这些数据保存到文件中时

with open('my_utf8_file.srt', 'w') as f:
    f.write(data_utf8)

我得到TypeError: write() argument must be str, not bytes

有人可以告诉我我在做什么错吗?

python ubuntu-18.04 vlc codec
2个回答
0
投票

尝试使用chardet确定文件编码。打开命令行并输入:


0
投票

您必须使用:

© www.soinside.com 2019 - 2024. All rights reserved.