Open LucienYang opened 8 years ago
哥们,你这么做也是不对的,你的 bpmnBytes = new BpmnXMLConverter().convertToXML(model,"GBK");
和 Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processName, new String(bpmnBytes)).deploy();
意思是以GBK的方式转换成byte数组,在deploy的时候,你的 new String(bpmnBytes)
没有传入转换成字符串的编码,意味着以系统默认的编码来转换(查看 new String([]byte)
源码可以看出),也就是说你以GBK的方式转换成byte数组,下一步却以系统默认的编码来转换成String,如果一旦系统默认编码不是GBK,你这种做法同样会导致乱码(你自己机器上没乱码是因为你很侥幸,你的机器的默认编码就是GBK)
正确的方式如下,只需将原来的
Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processName, new String(bpmnBytes)).deploy();
改成
Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processName, new String(bpmnBytes,"UTF-8")).deploy();
因为 bpmnBytes = new BpmnXMLConverter().convertToXML(model); 不传入指定编码的时候,会以UTF-8的格式去转换成byte数组(查看源码可以看到),所以在new String 的时候传入UTF-8去转换成字符串就不会乱码了
fix 使用activiti modeler设计的流程部署后中文乱码问题