Greetings,
I am having some issues with encoding in my rules. I am using a drl like this:
package pt.xpto.mydroolstest
import pt.xpto.model.SimpleFact
import pt.xpto.model.SimpleResult
import java.util.ArrayList
import java.util.Collection
global Collection results
rule 'first-rule'
when
SimpleFact(description=="someDescription", value < "500") and
SimpleFact(description=="anotherDescription", value=="1");
then
SimpleResult result = new SimpleResult();
ArrayList aList= new ArrayList();
result.setDescription("Some String with portuguese chars like ç and à");
aList.add("Another String with portuguese chars like é and ã.");
result.setValue(aList);
results.add(result);
end
My problem is that when i retrieve the results from firing the rules, the encoding of the strings with the portuguese chars is all messed up. From the tests i did, this happens when the rules are compiled by drools.
If i make the following modification to the rules
result.setDescription(new String("Some String with portuguese chars like ç and à".getBytes(),"utf-8"));
and load it like this, then the strings are retrieved ok.
RuleBase ruleBase = RuleBaseLoader.getInstance().loadFromReader(new InputStreamReader(DroolsTest.class.getResourceAsStream( "Rules.drl" )));
Yet the same modification does not work if the rule is defined in the BRMS and loaded by the rules agent.
I noticed that in the portuguese example shown in http://labs.jboss.com/drools/ no portuguese special chars are used, is this a limitation of the rules engine or am I just using wrong?
Can you point me in the right direction?
best regards,
João Mota