将unicode转换为字符串php

时间:2013-01-23 05:58:35

标签: php json utf-8 utf8-decode

我的实际字符串是

妈妈说,“我喜欢这个。” 杰克说,“我不明白。”

但相反它

在我的数据库的一列中,值保存就像我无法更改

妈妈说,“我喜欢这个。” 杰克说,“我不明白。”

我从查询中获取并执行json_encode然后在json字符串中显示这样的输出

妈妈说,\ u00e2 \ u20ac \ u0153我喜欢这个。\ u00e2 \ u20ac \ u009d \ n \ n杰克说,\ u00e \ u20ac \ u0153我不知道了。\ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u00e2 \ u20ac \ u009d \ n

所以请告诉我如何将这个unicode解码为双引号。

提前致谢

2 个答案:

答案 0 :(得分:3)

您可能需要通过utf8_decode()(而不是utf8_encode())传递您已有的数据。

为了确保将来顺利航行,您应该确保整个管道都是UTF-8。遗憾的是,这是非平凡的。在我的头顶,需要检查的地方:

  • HTTP守护程序的默认编码
    • 对于Apache,添加到.htaccess或httpd.conf:AddDefaultCharset UTF-8
  • PHP的default_encoding
    • 添加.htaccess或服务器配置:php_value default_charset "UTF-8"
  • 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的表和列charset
    • 使用字符集utf8和整理utf8_general_ci

如果您需要输出可能包含不需要的HTML或XML的值,请使用htmlentities($var, ENT_COMPAT, 'UTF-8');而不是htmlentities($var);

另外,尽可能使用mb_*函数,例如mb_strlen()mb_substr()

答案 1 :(得分:-1)

将表格整理更改为latin1_swedish_ci

使用特殊字符,你也可以做这样的事情

用于显示来自mysql的数据

$str=html_entity_decode(stripslashes($rows[4]));

用于将带有特殊字符的数据插入mysql

$var_name=htmlentities(mysql_real_escape_string($detail));