drools RHS部分乱码解决方案

开发环境统一采用了utf-8,然而此时运行规则后的结果中文部分全变成了乱码,经过调试drools的源代码,发现 drools的源代码中 org.drools.rule.builder.dialect.java.JavaDialect 类中 public void compileAll() 方法里 File dumpDir = this.configuration.getPackageBuilderConfiguration().getDumpDir(); 中得到的文件并非utf-8编码。在addClassCompileTask方法中是text是用getBytes方法(无参数)add进src的。因此,在addClassCompileTask 方法中,将src.add(fileName, text.getBytes())方法加入我们需要的utf-8参数,将其用utf-8编码,问题终于解决。(getBytes默认是platform 's default charset
具体代码代码如下:
复制代码
  1.  private void addClassCompileTask(final String className,
  2.                                      final BaseDescr descr,
  3.                                      final String text,
  4.                                      final MemoryResourceReader src,
  5.                                      final ErrorHandler handler) {
  6.         final String fileName = className.replace( '.',
  7.                                                    '/' ) + ".java";
  8.         try {
  9.    src.add( fileName,
  10.             text.getBytes("UTF-8") );
  11.   } catch (UnsupportedEncodingException e) {
  12.    e.printStackTrace();
  13.   }
  14.         this.errorHandlers.put( fileName,
  15.                                 handler );
  16.         addClassName( fileName );
  17.     }

你可能感兴趣的:(java)