-1

我在编码看起来像这样的字符时遇到问题:ĂăÂâÎîȘșȚț 我正在使用以下 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

我尝试Title使用以下代码(在 zend 框架上运行)在字段中插入上面提到的字符序列:

$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 ?谢谢。

4

3 回答 3

2

就我而言,我刚刚使用以下行更新了 php db 连接设置:

mysqli_set_charset( $con, 'utf8'); 

meta http-equiv="content-type" content="text/html; charset=UTF-8" 我还添加了@liyakat提到的html文件。

旧线程,但也许有人需要知道这一点。

于 2019-02-04T22:54:35.657 回答
0

要将默认设置为 UTF-8,您需要将以下内容添加到 my.cnf

[客户端] 默认字符集=utf8

[mysqld] default-character-set = 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');
于 2013-08-08T10:28:57.583 回答
0

确保您的 IDE 或文本编辑器也设置为使用 UTF-8 字符。

于 2013-08-08T10:23:11.313 回答