Drools指定的编码未生效



在我的drl文件中,我使用了德语字符,如元音变音符或ß。因此,在为Kie文件系统创建Resource时,我使用重载构造函数将编码设置为UTF-8。然而,在对插入的事实Drools启动规则之后,似乎没有应用指定的编码。我插入事实,如果条件对该事实成立,它应该将事实的Action1(String(属性修改为"Rückfrage",并返回修改后的事实。然而,当我查看检索到的bean的Action1属性时,我看到的是"Râ¼ckfrage"而不是"Rückfrage"。我尝试了UTF-8和ISO-8859-1编码。有什么想法吗?

Drools 7.13

KieSessionGenerator:

public KieSessionGenerator() {
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write(ResourceFactory.newClassPathResource(drlFile, "UTF-8"));
KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);
kieBuilder.buildAll();
KieModule kieModule = kieBuilder.getKieModule();
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
kieSession = kieContainer.newKieSession();
}

DRL:中的代码段

rule "813"
when
$bean : Bean(longDesc == "Infektion")
then
$bean.setAction1("Rückfrage");
end

插入事实:

public Bean lookupBean(Bean bean) {
kieSessionGenerator.getKieSession().insert(bean);
kieSessionGenerator.getKieSession().fireAllRules();
return bean;
}

当然,这是一个编码问题,而不是Drools的问题。我怀疑drlFile没有以UTF-8编码保存到磁盘。你用什么编辑器来编辑drlFile?找到一个显示文件实际编码的编辑器,或者将编辑器中的编码设置为UTF-8并覆盖文件。

最新更新