Activiti 流程图片突显乱码难题浅析与缓解

  图片 1

阴差阳错原因剖析

衣带渐宽终不悔,为伊消得人憔悴,众里寻他千百度,蓦然回首,那人却在灯火阑珊处好通顺的句子哈哈

您恐怕感兴趣的小说:

  • 使MySQL能够存款和储蓄emoji表情字符的设置教程
  • MySQL插入emoji表情退步难点的消除办法
  • 让Java后台MySQL数据库能够扶助emoji表情的格局
  • MySQL不能够存款和储蓄Emoji表情难点的消除措施分析
  • 完善摸底mysql中utf8和utf8mb4的区分
  • MySQL查看与修改当前数据库编码的措施
  • Mysql数据库编码问题(修改数据库,表,字段编码为utf8)
  • MySQL查看和修改字符编码的达成方式
  • mysql存款和储蓄emoji表情报错的处理格局【更改编码为utf8mb4】

  今日配备了一晃早晨的token,可是不知晓怎么回事正是布局不成功,在网上找了多的法子也从没缓解了那个题材,不过最终做在一个论坛上找到了缓解的法门。真是激动的绝不不要的,话不多说一贯怼代码。

汉语字符变成方块

在Activiti的配备中,加上字体配置即可。

对此Spring用户,在Spring配置文件中找到Activiti流程引擎定义的位置

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource"/>
    <property name="transactionManager" ref="transactionManager"/>
    <property name="databaseSchemaUpdate" value="true"/>
    ...

在里头添加多少个参数(依照Activiti的本子差异,参数数量不肯定。用IDE提醒,把持有带有font的都设置上就好了)。字体能够依照喜好设置,但需求保证tomcat运转时方可找到(例如暗中认可安装的linux服务器很或者就没有)。

<property name="activityFontName" value="宋体"/>
<property name="labelFontName" value="宋体"/>
<property name="annotationFontName" value="宋体"/>

重启tomcat使配置生效,重新安插流程以重新生成流程图。方块字就ok啦。

转了那么多弯,才理解难题就在二个地方。睡觉以前想驾驭了难点,依然经验太少。王伯隅的治学三境界:

前几日向MySQL数据库中的一张表添加含有粤语的数量,可是老是出尤其,检查程序并从未发现错误,无奈啊,后来再也检查那张表发现表的编码方式为latin1并且原想能够插入普通话的字段的编码格局也是latin1,然后重新精心观望控制台出口的可怜,进一步分明是表和表中字段编码不当导致的,那就修改表和当中对应的字段呗,网上找了片刻,你别说还真有,执行完sql脚本后果真能够存入汉语了,纵然如此依然觉得有必不可少计算一下,古人云:好记性不如烂笔头嘛,呵呵呵。

 1 <?php
 2 namespace app\weixin\controller;
 3 
 4 use think\Controller;
 5 
 6 define("TOKEN", "******");//这里要输入你的token值
 7 
 8 // $wechatObj = new wechatCallbackapiTest();
 9 
10 // $wechatObj->valid();
11 
12 class Wx2 extends Controller {
13     
14     public function index()  
15     {  
16         $echoStr = $_GET["echostr"];  
17   
18         //valid signature , option  
19         if($this->checkSignature()){  
20             ob_clean(); //丢弃缓存中的内容
21             echo $echoStr;  
22             exit;  
23         }  
24     }  
25   
26     public function responseMsg()  
27     {  
28         //get post data, May be due to the different environments  
29         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
30   
31         //extract post data  
32         if (!empty($postStr)){  
33                   
34                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);  
35                 $fromUsername = $postObj->FromUserName;  
36                 $toUsername = $postObj->ToUserName;  
37                 $keyword = trim($postObj->Content);  
38                 $time = time();  
39                 $textTpl = "<xml>  
40                             <ToUserName><![CDATA[%s]]></ToUserName>  
41                             <FromUserName><![CDATA[%s]]></FromUserName>  
42                             <CreateTime>%s</CreateTime>  
43                             <MsgType><![CDATA[%s]]></MsgType>  
44                             <Content><![CDATA[%s]]></Content>  
45                             <FuncFlag>0</FuncFlag>  
46                             </xml>";               
47                 if(!empty( $keyword ))  
48                 {  
49                     $msgType = "text";  
50                     $contentStr = "Welcome to wechat world!";  
51                     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
52                     echo $resultStr;  
53                 }else{  
54                     echo "Input something...";  
55                 }  
56   
57         }else {  
58             echo "";  
59             exit;  
60         }  
61     }  
62           
63     private function checkSignature()  
64     {  
65         $signature = $_GET["signature"];  
66         $timestamp = $_GET["timestamp"];  
67         $nonce = $_GET["nonce"];      
68                   
69         $token = TOKEN;  
70         $tmpArr = array($token, $timestamp, $nonce);  
71         sort($tmpArr,SORT_STRING); 72         $tmpStr = implode( $tmpArr );  
73         $tmpStr = sha1( $tmpStr );  
74           
75         if( $tmpStr == $signature ){  
76             return true;  
77         }else{  
78             return false;  
79         }  
80     }
81 
82 
83 }
1. 改动jvm暗中同意参数。

在tomcat的vm运维参数上,加上-Dfile.encoding=UTF-8。可是副作用是致使整个项目都运作在utf-8下,对于写的不谨慎的类型,大概引致别的地点暗中同意使用gb2312编码的代码出错。

图片 2

修改字段的编码格局:ALTEEscort TABLE `test` CHANGE `name` `name`
VA酷威CHA帕杰罗(36) CHARACTE奥迪Q7 SET utf8 NOT NULL;
该命令用于将表test中name字段的编码情势改为utf8

  前天就享受到那里,然后觉得本人写的正确的请推荐,感激

汉语字符变成方块

在布署流程时,生成流程图的代码位于

org.activiti.engine.impl.bpmn.deployer.BpmnDeployer.deploy():154 (Activiti 5.22中)

byte[] diagramBytes = IoUtil.readInputStream(processEngineConfiguration.
                    getProcessDiagramGenerator().generateDiagram(bpmnParse.getBpmnModel(), "png", processEngineConfiguration.getActivityFontName(),
                        processEngineConfiguration.getLabelFontName(),processEngineConfiguration.getAnnotationFontName(), processEngineConfiguration.getClassLoader()), null);

足见在此处,要求在processEngineConfiguration里,保存有正确的LabelFontName,以及AnnotationFontName作为参数,Generator才能科学生成(非英文)的流程图片。

数据库编码难题

在产出数据库编码难点在此以前自个儿还遇上了二个没分外,那就是本身透过DBUtils操作数据库,执行SELECT * FROM userInfos_t能够查询到全部的剧情,然后参数化查询就老大,比如SELECT * FROM userInfos_t WHERE name='张三',但是SELECT * FROM userInfos_t WHERE id =2却得以,也是百思不得解,好呢。也是数据库编码的难点。尽管本人在Navicat for mysql中来看的是’张三’,但数据库编码方式并不是UTF8,所以本身寻找是寻找不出来的。

  1. 第贰查看数据库的字符集

show variables like 'collation_%';

图片 3

那是自家修改之后的,原先的都以latin1

  1. 网上涉及了无数缓解方法,一定要致密看。

    本身的Mysql版本是5.7,做了如下修改成功了

    修改/etc/mysql/my.cnf

    [client]
    default-character-set=utf8
    [mysqld]
    default-storage-engine=INNODB
    character-set-server=utf8
    collation-server=utf8_general_ci
    

    怎么找my.cnf

    locate my.cnf
    //如果找不到的话
    updatedb,//然后在查找
    

    重启Mysql服务

    service mysqld restart
    
也可以查看[这篇文章](http://www.pc6.com/infoview/article_63586.html)

来解决

总结
====

暂时的问题就这样多,用了`DBUtil`,没有用`Hibernate`,等以后学习学习再用。

### 文章首发于kuiblog.com。加油

修改表的编码情势:ALTE本田CR-V TABLE `test` DEFAULT CHARACTE奥迪Q5 SET
utf8;该命令用于将表test的编码情势改为utf8;

发表评论

电子邮件地址不会被公开。 必填项已用*标注