MySQL和PHP:使用Cyrillic字符的UTF-8

30 浏览
0 Comments

MySQL和PHP:使用Cyrillic字符的UTF-8

我正在尝试在MySQL表中插入一个使用Cyrillic字符的值,但是出现了编码问题。

PHP代码如下:

connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE `c`.`mainp` SET `search` = 'test тест' WHERE `mainp`.`id` = 1;";
if ($conn->query($sql) === TRUE) {
}
$conn->close();
?>

MySQL表如下:

| id | search |

| 1 | test тест |

注意:PHP文件为utf-8编码,数据库采用utf8_general_ci校对规则。

0
0 Comments

在MySQL和PHP中使用Cyrillic字符时出现了UTF-8编码的问题。解决这个问题的方法是使用一些特定的代码。

问题的原因是MySQL默认使用Latin1编码,而Cyrillic字符需要使用UTF-8编码来正确显示。因此,需要在与MySQL建立连接后,将数据库的编码设置为UTF-8。

在以前的方法中,我们使用了mysql_query函数来设置编码。代码如下:

mysql_query("SET NAMES 'utf8';");

然而,从PHP 5.0.5版本开始,推荐使用mysqli扩展来代替mysql扩展。因此,我们可以使用mysqli_set_charset函数来设置编码。代码如下:

$mysqli->set_charset('utf8');

这样,我们就可以在数据库中正确地存储和检索Cyrillic字符了。

0
0 Comments

问题的原因是混合使用了mysql_*和mysqli_* API,解决方法是要使用mysqli_*,并确保所有相关设置和代码都使用UTF-8编码。

在解决这个问题之前,我们需要了解一些关于字符集的基本知识。在开发PHP/MySQL应用程序时,以下几点是需要注意的:

1. 应用程序中的所有属性都必须设置为UTF-8。

2. 将文档保存为UTF-8编码,不带BOM。

3. PHP和HTML的头部应该设置为UTF-8。

4. 连接到数据库时,将连接对象的字符集设置为UTF-8。

5. 确保数据库和表的字符集也设置为UTF-8。

6. 如果使用json_encode()函数,可能需要应用JSON_UNESCAPED_UNICODE标志,以避免将特殊字符转换为其十六进制等价物。

7. 在整个代码流水线中,所有内容都必须设置为UTF-8,以避免应用程序中出现乱码问题。

此外,还有一些特定的函数可以用于处理多字节字符,例如strtolower()函数无法将多字节字符转为小写,而需要使用mb_strtolower()函数。

需要注意的是,"utf-8"和"utf8"并不是可以互换使用的,HTML和PHP使用"utf-8",而MySQL则使用"utf8"。

如果应用程序中需要使用表情符号,MySQL需要使用utf8mb4字符集,而不是标准的utf8字符集。

对于使用mysql_*和PDO的情况,设置UTF-8的方法与mysqli_*类似,只是参数的传递方式有所不同。

最后,通过设置$conn->set_charset("utf8")来解决这个问题。现在,也可以在HTML中使用来设置字符集。

0