Drools的中文乱码问题几个解决办法
最近一直在研究Drools这个东西,我相信大多数刚入门的朋友可能都会遇到中文乱码问题,这着实让人很头疼. 我用的是Drools-5.4.0.对于中文乱码问题已遇到过多次,每次都是花费好长时间才解决掉,现在总结一下: 1.记住,不管你创建的项目是普通的java项目,还是web项目等,最好都选用"utf-8"编码. 2.如果你的规则只是在项目内部调用执行的,优先使用如下方式: Resource r=ResourceFactory.newClassPathResource(path,encoding); 这样你的规则文件就会按照你设定的编码格式去解析. 3.还有一种就是在规则文件中,set值为中文时出现乱码.(此方式太过麻烦,我只在第一次时使用过,后来基本都使用第2种方式解决) 解决方法如下: rule "rule a" 4.远程调用时,如webservice,我们项目是将规则的执行放在了webservice的服务端,然后另一个项目作为客户端去调用. 而且规则执行时不能使用第2种方式,于是乱码又产生了,具体原因是:Drools内部是使用系统默认编码的,而不是使用"utf-8". 这样它在window下就是gbk,在linux下又变成utf-8.(这点千万要注意) --你可以用如下方式测试:System.out.println(System.getProperty("file.encoding")); 别在main方法下面直接运行,这样会显示当前项目设置的编码. 在服务器运行,如tomcat下,就会显示gbk.(这可能是因为服务器用的是jdk的编码,jdk又是用系统编码,这只是我个人猜测) 这样的话,规则执行时用的就是gbk,而项目是utf-8,规则文件当然也是utf-8,于是乱码又产生了. --这里可能有人会说,那项目也直接用gbk不就编码一致了吗?不错,的确如此,我本人也这样弄过,确实没有乱码了. 但是,你的项目如果最终是要上传到linux服务器上的,你就惨了! --所以说千万别改,那怎么办呢? 将tomcat的编码设置成utf-8,其实是jdk的环境参数啦. 设置如下图: 这样你的tomat就用utf-8编码了,可以用System.out.println(System.getProperty("file.encoding"));再测试一下了. --可是这时候,console中显示的却成乱码了,呵呵,别慌. tomcat的设置下面还有Launch,如图: 点击那个按钮,如图设置: 如果Default不是"utf-8",就在other中设置utf-8 --最后,Run.关闭之后,再运行时.如下图: 看到了吧,那个后面有[Custom]的就是你自己定制的,千万别把它删掉哦!以后可以直接用它运行了. 5.当然网上有人建议修改源码,我也曾尝试过,不过本人功力不到,改下来太难了,而且源码中有很多地方都是使用默认的字符集. 所以修改源码实为下下之策,而且具体修改位置,你自己看着办吧,我是无能为力! 希望以上足以帮助道上朋友渡过难关!如果还有问题,可以联系我!qq:532927863 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |