作者:糖果

在阿里云的VPS上,准备用lapis克隆一版blog程序,就是现在这个发文章的Blog。

Mysql移植的过程中发现的了问题,Lapis读取mysql数据库数据出现乱码。

查看结果集合

SHOW VARIABLES LIKE 'character%';
mysql> SET character_set_client = utf8 ;  
mysql> SET character_set_connection = utf8 ;   
mysql> SET character_set_database = utf8 ;   
mysql> SET character_set_results = utf8 ;    
mysql> SET character_set_server = utf8 ;   
 
mysql> SET collation_connection = utf8 ;  
mysql> SET collation_database = utf8 ;   
mysql> SET collation_server = utf8 ; 


SET NAMES 'utf8';  

SET character_set_client = utf8;  
SET character_set_results = utf8;   
SET character_set_connection = utf8; 

上面这些在运行修改参数的方式,phpmyadmin修改有限的字符的方式都失灵。

注意,下面才是好用的方法:

mysqld --character-set-server=utf8
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysqld --character-set-server=latin1 \
           --collation-server=latin1_swedish_ci

另外,collation-server可以在phpmyadmin和mysql-workbench修改,就是GUI有些罗嗦。

./configure --with-charset=latin1 \
           --with-collation=latin1_german1_ci

这种编译时指定,个人很少用,没试过。

Lapis目前最大的问题是Moonscript翻译过来的lua代码,人类不易看懂。

这个问题是不是,lapis以来resty mysql引起呢,因为resty mysql connect数据库的时候,不能指定字符集,不能很肯定,没看源码。

下面这个连接是春哥对这个问的回答,供参考: