1

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

谢谢

4

1 回答 1

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)
    

此外,您在编写时可能会遇到问题。您确实需要在输出文件上设置编码:

file = open(fn, "w", encoding="utf-8")
于 2015-10-11T19:19:31.710 回答