繁体   English   中英

json_encode和mysql unicode问题

[英]json_encode and mysql unicode problem

我有以下javascript代码:

http://www.nomorepasting.com/getpaste.php?pasteid=22561

效果很好(makewindows函数已更改为显示它是一个php变量),但是html包含unicode字符,并且只会分配到第一个unicode字符的字符。 如果我制作了一个小的测试文件并直接回显了article_desc,则将输出所有html,尽管会显示方格标记而不是正确的符号。 但是json_encode似乎缩短了html,从而导致错误。

编辑:这是我想显示的html的mysql数据库的转储文件:

http://www.yousendit.com/download/TTZueEVYQzMrV3hMWEE9PQ

它在源代码中说utf-8。 回显article_desc生成的实际页面代码在这里:

http://www.nomorepasting.com/getpaste.php?pasteid=22566

它绝对是同一张唱片,所以我不确定为什么它看起来非常不同。

编辑:这通过调用来解决:mysql_query('SET NAMES utf8');

json_encode期望字符串为UTF-8编码的字节流。 您将必须在内部使用utf-8编码的字符串(无论如何,这是目前处理PHP中unicode字符的唯一当前方法),或使用其他库来生成json。

我遇到过同样的问题。 我正在使用Zend_Db / mysqli,而我的数据库内容实际上是UTF8。

我通过要求数据库适配器使用UTF8来解决了这个问题:

$conf->db->params['charset'] = 'UTF8';

如果使用PDO而不是mysqli,则可以通过以下方式实现:

$pdoParams = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8;');
$conf->db->params['driver_options'] = $pdoParams;

如果您不使用Zend_Db而是使用mysqli,则可能需要查看http://php.net/manual/en/mysqli.set-charset.php

来源: http : //www.zfsnippets.com/snippets/view/id/13

json_encode( utf8_encode( $Content ) );

这样可以解决您的问题。

我认为您不需要json_encode。 json_encode将PHP数组和对象编码为可读的JavaScript格式。 如果您在ajax中发送纯文本或html,则不需要json_encode

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM