Mysql处理非英文字符输入,用phpMyAdmin命令框,不通过PHP

时间:2015-11-13 06:43:07

标签: php mysql phpmyadmin

我的数据库处理中文和日文字符。

当我在phpMyAdmin命令框中插入行时,它可以很好地工作。

但是当我在我的网站上设置查询输入时会出现问题,查询是通过php文件获取的,例如:

    $query = $_POST['query'];
    $result = $dbc->query($query); 

非英语字符在数据库中变成垃圾,比如

  ID      column1
  1666    ä½ å¥½å•Šå•Šå•Š

我检查过php文件接收到的字符很好,问题应该来自Mysql。所有的charset都是utf-8。

我是mysql的新手,如果您需要更多信息,请告诉我。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

列的归类设置为utf8_general_ci

更多信息:https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html

将此行添加到PHPMyAdmin

中的config.inc.php中
$cfg['DefaultCharset'] = 'utf8';
$cfg['DefaultConnectionCollation'] = 'utf8_general_ci';

答案 1 :(得分:0)

由于phpMyAdmin正常工作,听起来你的应用程序在这里有问题。

也许你可以澄清你在写“php文件收到字符好”时的意思 - 你是如何确定的?我阅读它的方式,您可以从您的应用程序创建正确的字符,并通过phpMyAdmin在数据库中正确显示,但当您尝试通过您的应用程序显示它时,它显示乱码。在这种情况下,应用程序中检索和显示数据的部分似乎有问题。

无论如何,这里有很多关于有胡言乱语的人的答案,最好的起点是UTF-8 all the way through,你还可以在Special characters in PHP / MySQLProblem with PHP and Mysql UTF-8 (Special Character)阅读更多内容。最后,即使它已经脱离了Stackoverflow网络,phpMyAdmin wiki也能很好地覆盖它。

作为提示,大多数时候我看到这个问题是由于在从PHP脚本设置MySQL连接时没有发出SET NAMES(或使用等效函数)引起的。