首页 > 解决方案 > 编码和解码 UTF-8 的问题

问题描述

我正在尝试接收输入文本,将其保存到文件并调用另一个将文本到语音应用到它的进程。几天来我一直在努力编码,需要一些帮助。

起初,我只是按原样从 POST 请求中获取输入文本并将其保存到文件中,但我会收到如下错误:

File "/home/.../merlin/src/run_merlin.py", line 1224, in <module>
main_function(cfg)
File "/home/.../merlin/src/run_merlin.py", line 572, in main_function
label_normaliser.perform_normalisation(in_label_align_file_list, binary_label_file_list, label_type=cfg.label_type)
File "/home/.../merlin/src/frontend/linguistic_base.py", line 68, in perform_normalisation
self.extract_linguistic_features(ori_file_list[i], output_file_list[i], label_type)
File "/home/.../merlin/src/frontend/label_normalisation.py", line 26, in extract_linguistic_features
A = self.load_labels_with_state_alignment(in_file_name)
File "/home/.../merlin/src/frontend/label_normalisation.py", line 487, in load_labels_with_state_alignment
utt_labels = fid.readlines()
File "/home/.../merlin/.venv/lib/python3.5/codecs.py", line 321, in decode

(result, consumed) = self._buffer_decode(data, self.errors, final)

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

所以我做了以下事情:

text = text.encode('utf-8').split()
file = codecs.open(filename, 'w+', 'utf-8')
file.write(text.decode('utf-8'))
file.close()

但同样的错误不断发生。我简单地尝试file.write(text)了,没有解码,但这给了我以下错误:

Can't convert 'bytes' object to str implicitly

如果有帮助,我正在尝试使用Merlincodecs.py ,但如上所示,python在读取文件时似乎抛出了错误。

编辑:按照 Giacomo Catenazzi 的建议,我将代码更改为:

text = text (not encoded)
file = codecs.open(filename, 'w+', 'utf-8')
file.write(text)
file.close() 

但同样的错误也会发生。我在问题的开头添加了完整的堆栈跟踪,因为问题似乎不是我认为的问题。

标签: pythonpython-3.xutf-8character-encoding

解决方案


推荐阅读