3

jython2.5.2を使用するSikuli(sikuli.orgを参照)を使用しています。

JavaレベルでのRegionクラスの概要は次のとおりです。

public class Region {

    // < other class methods >

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

Pythonレベルには、Wrapperclassがあります。

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文字の意図どおりに機能しますが、テキストとしてö、ä、またはüを使用すると、次のようになります。

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

// output:
pythondebug: ä
javadebug: ä

Javaオブジェクトに渡されたときに、文字が誤って変換されたようです。

ここで何が問題になっているのか、そしてこれを修正する方法を知りたいので、pythonmethodに入力された文字はjavamethodでも同じです。ご協力いただきありがとうございます

4

1 に答える 1

0

Jython コードから見ると、文字列が UTF-8 でエンコードされていることを Java に伝える必要があります。

def type(self, text):
    jtext = java.lang.String(text, "utf-8")
    print "pythondebug: " + text  // debug output
    JRegion.type(self, jtext)
于 2012-12-21T08:21:34.400 に答える