1
4

2 回答 2

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 的表和列字符集
    • 使用字符集utf8和排序规则utf8_general_ci

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

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

于 2013-01-25T19:58:03.000 回答
-1

将您的表格排序规则更改为latin1_swedish_ci

使用特殊字符,您还可以执行以下操作

用于显示来自 mysql 的数据

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

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

$var_name=htmlentities(mysql_real_escape_string($detail));
于 2013-01-23T06:05:02.953 回答