我有这个样子O问题编码字符:ĂăÂâÎŢţ我使用下面的MySQL表:
CREATE TABLE `news` (
`NewsID` int(11) NOT NULL AUTO_INCREMENT,
`UserID` int(11) NOT NULL,
`Title` varchar(255) CHARACTER SET utf8 NOT NULL,
`Date` datetime NOT NULL,
PRIMARY KEY (`NewsID`),
FULLTEXT KEY `Title` (`Title`,`Content`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
我尝试通过使用下面的代码(关于Zend框架运行)以插入上部上述字符序列中的Title
字段:
$params = $this->getRequest()->getParams();
$mysqli = new mysqli("localhost", "user", "pass", "database_name");
$mysqli->query("INSERT INTO `news` (`NewsID`, `Title`) VALUES (NULL, '".$params['text']."');");
并在数据库中,我得到了现场Title
以下值:ÃãÂâÎŢţ为什么这些字符的HTML编码?为什么不是第一个字符编码为他们utf8_bin相同呢?谢谢。
在我来说,我刚刚更新的PHP数据库连接设置与以下行:
mysqli_set_charset( $con, 'utf8');
此外,我加入HTML文件meta http-equiv="content-type" content="text/html; charset=UTF-8"
为@liyakat提及。
旧线,但也许有人需要知道这一点。
确保您的IDE或文本编辑器也被设置为使用UTF-8字符。
要设置默认为UTF-8,要添加以下到my.cnf文件
[客户]默认字符集= UTF8
的[mysqld]默认字符集= UTF8然后,以验证:
mysql> show variables like "%character%";show variables like "%collation%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
或尝试
尝试设置MySQL连接到UTF-8:
SET NAMES 'utf8'
和发送明确的UTF-8头,以防万一你的服务器有一些其他默认设置:
header('Content-type: text/html; charset=utf-8');