我将所有数据库/表和列设置为UTF-8_general_ci整理集.
我面临的条件: -
cc2faa;(如此类似)和网页上的正确印地语.जानाphpmyadmin但Hindi在网页上的字符.现在的主要问题是: -
数据已经在线上通过表单进行了更改,现在我需要将这些数据导出到excel并提供给客户端,但我得到的जाà¤是excel而不是印地文字符.
注意 :-
utf8适用于所有表格.我看过很多关于utf8问题的帖子,但似乎没有人有这种奇怪的不同行为问题.
请问我有什么救援吗?或者最后还得给出数据的PHP报告?
请帮忙!!
- 当我通过phpmyadmin手动插入hindi数据时,我可以在phpmyadmin中看到hindi字符,而在PHP生成的网页上看到问号时
PHP可能会生成问号,因为数据库连接的编码不是utf-8.如何解决这个问题取决于您使用的数据库库; 如果您使用MySQLi mysqli_set_charset('utf8'),如果您将PDO添加charset=utf8到DSN ...
- 在同一个表中,当我通过HTML/PHP表单插入数据时,我看到一些无法识别的英语单词,如cc2faa;(类似这样的东西)和网页上的正确印地语.
- 对于大数据,我们有一个从txt文件读取并在表格中插入数据的脚本,我在phpmyadmin中看到像ààœà¤¾ààààà¾这样的字符,但是在印地语网页上.
这些可能是由上述相同的问题引起的:PHP表单和脚本使用默认编码连接到数据库,可能是latin1.然后他们插入utf-8编码的文本,但由于MySQL认为你正在使用latin1,它再次将文本编码为utf-8,并将这个双重编码的文本插入到表中.
所以:PHP向MySQL发送"जाना"告诉它是latin1,然后MySQL将其转换为utf-8,从而产生"जाना".后来PHP要求MySQL返回值,并且由于连接再次使用latin1,MySQL将"जाना"解码为latin1.然后PHP假装这个latin1字符串实际上是utf-8并显示"जाना".
同样,解决方案是将连接的编码设置为utf-8.这取决于您用于访问数据库的内容.