Lapis读取中文Mysql数据的问题
作者:糖果
在阿里云的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数据库的时候,不能指定字符集,不能很肯定,没看源码。