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



要在Transcrypt Python-To-JS编译器中从Python生成JavaScript,Python 3.5的ast模块与以下代码结合使用:

class Generator (ast.NodeVisitor):
...
...
def visit_Str (self, node):
self.emit (repr (node.s))  # Simplified to need less context on StackOverflow
...
...

这很好,例如对于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编码提示,并返回打开的文件,就好像它是由普通的open使用正确的编码打开的一样。

很难找到,目前没有在绿树蛇博士。实际上是通过在GitHub上的CPython源代码中搜索"编码"找到的。

已经为绿树蛇文档创建了一个问题来添加此内容。

最新更新