我的实际字符串是
妈妈说:"我喜欢这个。杰克说:"我不明白。
但相反,它
在我的数据库中的一列中,值像我无法更改的那样保存
妈妈说,"我喜欢这个。杰克说,"我不™明白。
我正在从查询中获取它并执行json_encode然后它以 json 字符串显示这样的输出
妈妈说,''u00e2''u20ac''u0153我喜欢这个。''u00e2''u20ac''u009d''杰克说, ''u00e2''u20ac''u0153I don''u00e2''u20ac''u2122t get it.''u00e2''u20ac''u009d''
n所以请告诉我如何将这个 unicode 解码为双引号。
提前致谢
您已经拥有的数据可能需要通过 utf8_decode()
传递(而不是utf8_encode()
)。
为了确保将来的顺利进行,您应该确保整个管道都是 UTF-8。可悲的是,这并非微不足道。在我的头顶上,需要检查的地方:
- HTTP 守护程序的默认编码
- 对于 Apache,请添加到 .htaccess 或 httpd.conf:
AddDefaultCharset UTF-8
- 对于 Apache,请添加到 .htaccess 或 httpd.conf:
- PHP的default_encoding
- 添加 .htaccess 或服务器配置:
php_value default_charset "UTF-8"
- 添加 .htaccess 或服务器配置:
- HTTP 的标头内容类型字符集
-
header('Content-Type: text/html; charset=UTF-8');
-
- HTML 的元内容类型字符集
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-
- PHP 的 MySQL 连接字符集
-
mysql_set_charset('utf8');
-
- MySQL 的数据库默认字符集和排序规则
- 使用字符集
utf8
和排序规则utf8_general_ci
- 使用字符集
- MySQL 的表和列字符集
- 使用字符集
utf8
和排序规则utf8_general_ci
- 使用字符集
如果您需要输出可能包含不需要的 HTML 或 XML 的值,请使用htmlentities($var, ENT_COMPAT, 'UTF-8');
而不是简单地htmlentities($var);
此外,尽可能使用 mb_*
函数,例如 mb_strlen()
和 mb_substr()
。
将表排序规则更改为latin1_swedish_ci
使用特殊的字符,您也可以做这样的事情
用于显示来自 MySQL 的数据
$str=html_entity_decode(stripslashes($rows[4]));
用于将带有特殊字符的数据插入MySQL
$var_name=htmlentities(mysql_real_escape_string($detail));