晓峰 Rotating Header Image

Posts under ‘编码问题’

json_encode中的编码问题

前段时间想把数据格式转化成json格式,以便于前端处理,php中恰好有个函数可以将各种类型的数据转成json,json_encode,用法如下 <?php header(‘Content-Type: application/json; charset=utf-8′); $obj; $obj -> id = 1234; $obj -> name = ‘mtalk’; echo json_encode($obj); ?> 会格式成: {“id”:1234,”name”:”mtalk”} 当字符串包含utf8中文字符时,json_encode会把中文字符转成unicode字符串,例如: json_encode(‘要’); 会格式化成: (1).”\u8981″ 而不是: (2).”要” 而经过javascript读取之后还是会在页面显示为(2)。 起初还一直以为是LAMP的那个部分的字符集出了问题,经查证,json_encode本意如此,再说经过javascript处理就不会有页面显示的问题,而且json字符串不会因为不同的字符集同时出现时出错,所以也是有一定的道理的。好了,废话不多说,点到为止。

LAMP中utf8乱码解决方案

php,mysql的utf-8乱码问题已经很久了,找了一大堆资料,却不能解决,其实并不是很难解决,只是方法就在眼前,而没能发现: 在分别在mysql,php,apache中配置相关参数后,执行如下操作: 1.mysql的配置文件,如”/etc/mysql/my.cnf”文件在[[mysql]]下添加: default-character-set=utf8 2.php的配置文件,如”/etc/php5/apache2/php.ini”: 把;mssql.charset = “ISO-8859-1″该写成如下(去掉前面的“;”), mssql.charset = “utf8″ 3.apache的配置文件,如”/etc/apache2/conf.d/charset”添加如下: AddDefaultCharset UTF-8 【注】在不同的系统以及不同版本的相关软件的配置会略有不同,但是并不会大相径庭: 接着,重启mysql,apache; SHOW VARIABLES LIKE ‘character_set%’; +————————–+—————————-+ | Variable_name | Value | +————————–+—————————-+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | [...]