Jython的Java和Python级别的不同编码



我正在使用使用jython2.5.2的sikuli(请参阅sikuli.org)。

这是Java级别的类区域的摘要:

public class Region {
    // < other class methods >
    public int type(String text) {
        System.out.println("javadebug: "+text); // debug output
        // do actual typing
    }
}

在Pythonlevel上有一个包装纸:

import Region as JRegion            // import java class
class Region(JRegion):
    # < other class methods >
    def type(self, text):
        print "pythondebug: "+text  // debug output
        JRegion.type(self, text)

这是针对ASCII Chars的工作,但是当我将Ö,ä或ü用作文本时,这会发生:

// python input:
# -*- encoding: utf-8 -*-
someregion = Region()
someregion.type("ä")
// output:
pythondebug: ä
javadebug: ä

传递给Java对象时,角色似乎错误地转换了。

我想知道这里到底出了什么问题以及如何解决此问题,以便在Javamethod中输入的字符是相同的。感谢您的帮助

从您必须告诉java的jython代码中查看,字符串是UTF-8编码:

def type(self, text):
    jtext = java.lang.String(text, "utf-8")
    print "pythondebug: " + text  // debug output
    JRegion.type(self, jtext)

相关内容

  • 没有找到相关文章

最新更新