gpt4 book ai didi

java - 如何在 PythonInterpreter (jython) 中获取 UTF-8 阅读器?

转载 作者:行者123 更新时间:2023-11-30 08:57:07 30 4
gpt4 key购买 nike

我在我的 Web 应用程序中使用嵌入式 Jython(版本 2.5.3),我尝试在我的 Java 代码中这样做:

PythonInterpreter pythonInterpreter = new PythonInterpreter();
pythonInterpreter.exec("import codecs");
pythonInterpreter.exec("codecs.getreader('utf8')");

但是我得到这个错误:

File "<string>", line 1, in <module>
File "__pyclasspath__/codecs$py.class", line 920, in getreader
LookupError: no codec search functions registered: can't find encoding 'utf8'

如何正确获取'utf8'编码的reader?

根据 python 文档,编解码器模块中应该有可用的“utf8”编码:https://docs.python.org/2/library/codecs.html#standard-encodings (小写/大写和连字符/下划线都是允许的)。

我使用的是 Windows 7,java 1.7.0_71。我猜操作系统应该无关紧要——这是在 jboss(7.2 版)上运行的 Web 应用程序。 jython-standalone-2.5.3.jar 和常规 jython-2.5.3.jar 都会出现此问题。

最佳答案

我设法找到了这个问题的解决方案——这是一个配置错误。将代码更改为:

import java.util.Properties;
import org.python.util.PythonInterpreter;

(...)

Properties properties = new Properties();
properties.setProperty("python.path", pythonPath);
PythonInterpreter.initialize(System.getProperties(), properties, new String[] { "" });
PythonInterpreter pythonInterpreter = new PythonInterpreter();
pythonInterpreter.exec("import codecs");
pythonInterpreter.exec("codecs.getreader('utf8')");

其中 pythonPath 是部署的 WAR 中 jython-2.5.3.jar 中“Lib”目录的路径。

我最终将它全部包装在一些 PostConstruct Spring 方法中,该方法在启动 Spring 上下文时调用。

关于java - 如何在 PythonInterpreter (jython) 中获取 UTF-8 阅读器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303395/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com