我使用以下代码使用python(3.4)美化js文件(使用jsbeautifier模块)
import jsbeautifier
def write_file(output, fn):
file = open(fn, "w")
file.write(output)
file.close()
def beautify_file():
res = jsbeautifier.beautify_file("myfile.js")
write_file(res, "myfile-exp.js")
print("beautify_file done")
def main():
beautify_file()
print("done")
pass
if __name__ == '__main__':
main()
该文件包含以下内容:
function MyFunc(){
return {Language:"Мова",Theme:"ТÑма"};
}
当我运行python代码时,出现以下错误:
'charmap' codec can't decode byte 0x90 in position 43: character maps to <undefined>
有人可以指导我如何使用美化器处理unicode / utf-8字符集吗?
由于
答案 0 :(得分:1)
没有完整的堆栈跟踪很难说,但看起来jsbeautify并不完全支持Unicode。
请尝试以下方法之一:
将js文件解码为Unicode:
with open("myfile.js", "r", encoding="UTF-8") as myfile:
input_string = myfile.read()
res = jsbeautifier.beautify(input_string)
或者,如果失败
以二进制文件打开文件:
with open("myfile.js", "rb") as myfile:
input_string = myfile.read()
res = jsbeautifier.beautify(input_string)
此外,写作时可能会遇到问题。您确实需要在输出文件上设置编码:
file = open(fn, "w", encoding="utf-8")