我正在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
。
有人可以告诉我我在做什么错吗?