Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-3402

Encoding set in constructor not taking effect

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: Major Major
    • None
    • 7.13.0.Final
    • None
    • None
    • 2018 Week 48-50
    • NEW
    • NEW

      In my drl file, I'm using German characters such as Umlauts or ß. Thus, I am setting the encoding to UTF-8 with the overloaded constructor when creating the Resource for the Kie File System. However, after firing the rules on the inserted Fact Drools does not seem to apply the specified encoding. I insert the fact, and if the condition is true to that fact it should modify the Action1 (String) attribute of the fact to "Rückfrage" and return the modified fact. However, when I look at the retrieved bean's Action1 attribute I am seeing "Rückfrage" instead of "Rückfrage". I tried both UTF-8 and ISO-8859-1 encoding. Any ideas what's wrong?

      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();
      }
      Snippet from DRL:

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

      Inserting the fact:

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

      UPDATE: After some further investigation it looks the issue can be reproduced only when the default system encoding is set to CP-1252.
      Since the system default was CP-1252, the JVM was running with that encoding and the KIE Resource also had used this encoding, even though I set UTF-8 in its conctructor.
      Once I changed the system default to UTF-8, the special characters (ä, etc.) were shown correctly.

              tzimanyi@redhat.com Tibor Zimányi
              bkurucz_jira Barnabás Kurucz (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: