HTML/PHP表单和MySQL(印地语)之间的UTF-8奇怪行为

HTML/PHP表单和MySQL(印地语)之间的UTF-8奇怪行为,mysql,utf-8,hindi,Mysql,Utf 8,Hindi,我已将所有数据库/表和列设置为UTF-8_general_ci排序规则集 我所面对的情况: 当我通过phpmyadmin手动插入印地语数据时,我可以在phpmyadmin中看到印地语字符,而在PHP生成的网页上看到问号 在同一个表中,当我通过HTML/PHP表单插入数据时,我看到一些无法识别的英语单词,如cc2faa;像这样的东西和正确的印地语在网页上。 对于大数据,我们有一个脚本,可以从txt文件中读取数据并将数据插入表中,我在phpmyadmin中看到像œa¨a¨a¨a¨a¨b这样的字符,但

我已将所有数据库/表和列设置为UTF-8_general_ci排序规则集

我所面对的情况:

当我通过phpmyadmin手动插入印地语数据时,我可以在phpmyadmin中看到印地语字符,而在PHP生成的网页上看到问号 在同一个表中,当我通过HTML/PHP表单插入数据时,我看到一些无法识别的英语单词,如cc2faa;像这样的东西和正确的印地语在网页上。 对于大数据,我们有一个脚本,可以从txt文件中读取数据并将数据插入表中,我在phpmyadmin中看到像œa¨a¨a¨a¨a¨b这样的字符,但在网页上看到的是印地语。 现在的主要问题是:

数据已通过表单在线更改,现在我需要将这些数据导出到excel并提供给客户,但我得到的是excel中的字符,而不是印地语字符

注:-

所有的英文字符都很好,到处都是。 对于所有表格,我的字符集都是utf8。 我试图将排序规则更改为UTF-8_-bin,但这对我也没有任何帮助。 浏览器上的编码是UTF-8,我已经发送了UTF-8编码的头。 我看过很多关于utf8问题的帖子,但似乎没有人有这种奇怪的行为问题

请问我有什么可以救我的吗??还是最后要给PHP报告的数据


请帮忙

如果需要将数据导出为Excel文件,请使用Eli Dickinson提供的PHP类PHP导出数据。它相当漂亮,到目前为止,我用它导出奇怪的角色集没有问题

当我通过phpmyadmin手动插入印地语数据时,我可以在phpmyadmin中看到印地语字符,而在PHP生成的网页上看到问号 PHP可能会生成问号,因为数据库连接的编码不是utf-8。如何修复此问题取决于您使用的数据库库;如果您使用MySQLi,请使用MySQLi_set_charset'utf8',如果PDO将charset=utf8添加到DSN

在同一个表中,当我通过HTML/PHP表单插入数据时,我看到一些无法识别的英语单词,如cc2faa;像这样的东西和正确的印地语在网页上。 对于大数据,我们有一个脚本,可以从txt文件中读取数据并将数据插入表中,我在phpmyadmin中看到像œa¨a¨a¨a¨a¨b这样的字符,但在网页上看到的是印地语。 这些可能是由与上面相同的问题引起的:PHP表单和脚本使用默认编码(可能是latin1)连接到数据库。然后,他们插入utf-8编码的文本,但由于MySQL认为您使用的是latin1,所以它再次将文本编码为utf-8,并将这种双重编码的文本插入表中

所以:PHP发送जाना 到MySQL,告诉它是拉丁文1,MySQL将其转换为utf-8,结果是。稍后,PHP要求MySQL返回值,由于连接再次使用latin1,MySQL将获取并解码为latin1。然后PHP假装这个拉丁字符串实际上是utf-8并显示जाना.


同样,解决方案是将连接的编码设置为utf-8。这取决于访问数据库的方式。

请参阅:当我将excel工作表连接到数据库时,是否有任何方法可以获得印地语字符而不是那些不可读的字符??请尝试在select语句之前运行以下查询,SET character\u SET\u results='utf8',character\u SET\u client='utf8',character\u set\u connection='utf8',character\u set\u database='utf8',character\u set\u server='utf8'是的,这对我有帮助,谢谢。但为此,我必须为不同的表编写不同的代码。同样,使用它也不能帮助我将excel连接到数据库服务器。竖起大拇指,为什么我没有想到。。现在我明白了,非常感谢:,你是对的,我现在更正了,我只需要导出和重新导入数据一次,并将字符集添加到连接字符串中: