php文件字​​符编码、mysql数据库字符编码、特殊字符

Posted

技术标签:

【中文标题】php文件字​​符编码、mysql数据库字符编码、特殊字符【英文标题】:php file character encoding, mysql database character encoding, special characters 【发布时间】:2014-12-21 20:37:26 【问题描述】:

我有一个带有一些特殊字符、一个输入表单、一些 php 页面的 mysql 数据库。

在我的第一个 php 页面 (requestPage) 中,我有输入表单。

此页面(通过 GET)向另一个 php 页面 (ResultsPage) 发送参数。

最后这个php页面(ResultsPage)向dbms发送一个带有参数的查询并显示结果。


RequestPage 通过 utf-8 编码

meta http-equiv="Content-Type" content="text/html; charset=utf-8

ResultsPage 通过 utf-8 编码

meta http-equiv="Content-Type" content="text/html; charset=utf-8 header('Content-type: text/html; charset=utf-8');

数据库及其表被编码为 utf8_general_ci。


现在,例如:

如果我在 RequestPage 的形式中输入单词“Cantu”,resultPage 会执行查询并向我显示带有单词“Cantù”的 DB 的每个条目,对我来说没问题。 如果我在 RequestPage 中输入单词“Cantù”,resultsPage 会执行查询并且不显示任何行,但我想查看带有单词“Cantù”的行!

有什么建议吗?

【问题讨论】:

此外:在 ResultsPage 中,我打印了我正在尝试执行的查询,并将其放入 phpMyAdmin 并且它可以工作。使用“Cantù” phpmyadmin 向我显示正确的行(带有单词“Cantù”的行)。 【参考方案1】:

我已经解决了在 php resultsPage 文件中添加这个字符串的问题:

mysql_query("SET character_set_results = 'utf8', character_set_client='utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $connection);

显然它必须插入到这个字符串之后:

$connection = mysql_connect($servername,$username,$dbpassword);

【讨论】:

以上是关于php文件字​​符编码、mysql数据库字符编码、特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

jdbc获取blob类型乱码

在ASCII码字符编码中,啥字符无法显示或打印出来

php连mysql用 utf-8编码乱码怎么办

php mysql 编码问题

php无bom和有bom的文件编码有啥区别

mysql编码数据库,数据表,字段各用啥编码