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

标签 encoding character-encoding jython sikuli jython-2.5

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

以下是 Java 级别上 Region 类的摘要:

public class Region {

    // < other class methods >

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

在Python级别有一个包装类:

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 中输入的字符相同。 感谢您的帮助

最佳答案

从 Jython 代码来看,您必须告诉 Java,该字符串是 UTF-8 编码的:

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

关于encoding - Jython 的 Java 和 Python 级别的不同编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13165510/

相关文章:

java - 如何以编程方式在IntelliJ IDEA中设置全局gradle设置(gradle vm选项)?

excel - Excel 数据中的变音符号

character-encoding - 在什么字符集中,0xE1 是带有变音符号的 "a"?

Jython:有没有一种干净的方法来实现带有函数引用的 Java 接口(interface)?

java - 使用 Jython 在 Java 中运行 Python 程序

javascript - 如何使用 JavaScript 将 URL 中包含非 ASCII 字符的参数传递给 JSP/Servlet?

ruby-on-rails - 请求 rails 时编码 xls 文件

javascript - Flask webservice 的 HighCharts 查询参数问题

java - 从 "UTF-8"转换为 "ISO-8859-1"时,除 0x00-0x7F 之外的字符不显示

java - Websphere wsadmin 读取 csv