在使用Python 3.5的AST模块为字符串文字生成代码时处理à,需要用正确的编码打开

Dealing with à in generating code for a string literal using Python 3.5's AST module, need to open with right coding

要在Transcrypt中从Python生成JavaScript Python到JS编译器,Python3.5的ast模块结合使用以下代码:

class Generator (ast.NodeVisitor):
    ...
    ...

    def visit_Str (self, node):
        self.emit (repr (node.s))  # Simplified to need less context on Whosebug

    ...
    ...

这很好用,例如对于 Python 的以下行:

test = "âäéèêëiîïoôöùüû"

正确翻译为:

var test = 'âäéèêëiîïoôöùüû';

只有字符à出问题:

test = "àâäéèêëiîïoôöùüû"

翻译成:

var test = 'Ĝxa0âäéèêëiîïoôöùüû';

有什么方法可以让 ast 模块读取源文件中的编码指令,例如:

# coding=<encoding name>

要打开 Python 文件进行解析,请使用

tokenize.open

而不是普通的

open

函数。

它将打开,阅读 pep263 编码提示和 return 打开的文件,就像使用正确的编码由普通 open 打开一样。

很难找到,目前不在 Green Tree Snakes 文档中。实际上是通过在 GitHub.

的 CPython 来源中搜索 'coding' 找到的

已为 Green Tree Snakes 文档创建问题以添加此内容。