使用unicode文本在python中使用jsbeautifier时出错

时间:2015-10-10 21:46:12

标签: python unicode js-beautify

我使用以下代码使用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字符集吗?

由于

1 个答案:

答案 0 :(得分:1)

没有完整的堆栈跟踪很难说,但看起来jsbeautify并不完全支持Unicode。

请尝试以下方法之一:

  1. 将js文件解码为Unicode:

    with open("myfile.js", "r", encoding="UTF-8") as myfile:
        input_string = myfile.read()
        res = jsbeautifier.beautify(input_string)
    

    或者,如果失败

  2. 以二进制文件打开文件:

    with open("myfile.js", "rb") as myfile:
        input_string = myfile.read()
        res = jsbeautifier.beautify(input_string)
    
  3. 此外,写作时可能会遇到问题。您确实需要在输出文件上设置编码:

    file = open(fn, "w", encoding="utf-8")