将 Unicode 转换为字符串 PHP


convert unicode to string php

我的实际字符串是

妈妈说:"我喜欢这个。杰克说:"我不明白。

但相反,它

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

妈妈说,"我喜欢这个。杰克说,"我不™明白。

我正在从查询中获取它并执行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
  • 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 的表和列字符集
    • 使用字符集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));