在子过程之后,编码字符“‰”在Python中返回“�”。

时间:2019-01-28 20:26:51

标签: python encoding character-encoding subprocess

我正在创建一个崇高的文本插件,以使用lua-fmt并在保存时自动格式化lua代码。几乎完成了,除了像'‰'这样的某些字符在格式化后返回诸如“�”之类的怪异结果。

我格式化代码的方法是使用旧代码创建一个文件并使用lua-fmt程序,方法是使用 // Keep listening to the InputStream while connected while (true) { try { bytes = mmInStream.read(buffer); // it may not work because its not reading from the first line unlike this: bytes = mmInStream.read(buffer, 0, bytes); // Send the obtained bytes to the UI Activity mHandler.obtainMessage(MESSAGE_READ, bytes,-1, buffer).sendToTarget(); 对其进行调用,如以下摘录所示:

subprocess.check_output

我也尝试过使用file = open("formattingAux.lua","w") file.write(self.view.substr(file_text))#text from saving file file.close() output = subprocess.check_output("luafmt formattingAux.lua", shell=True, universal_newlines=True) ,但是产生了相同的结果。如果我在文件上运行luafmt程序,它将产生正确的结果,这就是为什么我认为subprocess.Popen()编码存在问题。

我还尝试了不同的编码,但没有得到肯定的结果。

谢谢!

1 个答案:

答案 0 :(得分:0)

正如@GiacomoCatenazzi所指出的,我没有明确地对我的辅助文件进行编码,这使lua-fmt不知道奇怪的字符,将open方法更改为wd并将其编码为 UTF-8 效果很好!