流口水指定的编码无效

时间:2018-12-03 11:02:07

标签: java drools kie

在我的drl文件中,我使用的是Umlauts或ß等德语字符。因此,在为Kie File System创建资源时,我使用重载的构造函数将编码设置为UTF-8。 但是,在插入的事实口号上触发规则后,似乎并未应用指定的编码。我插入事实,如果条件与该事实相符,则应将事实的Action1(字符串)属性修改为“Rückfrage”,并返回修改后的事实。但是,当我查看检索到的bean的Action1属性时,我看到的是“Rückfrage”而不是“Rückfrage”。我尝试了UTF-8和ISO-8859-1编码。有什么想法吗?

流口水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;
}

1 个答案:

答案 0 :(得分:0)

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