12

我有一个带有一些文本的表格,并且文本是希腊字母,当我使用 sql 工具并从该表格中选择数据时正确显示 SQL 查询结果的图像

但是当我使用 mysql_fetch 数组显示我的网站前端时,当 echo 显示如下 在此处输入图像描述

任何人都知道如何解决此错误,谢谢。

4

6 回答 6

20

尝试以下操作:

连接到 mysql 后,执行以下查询以确保您使用的是 UTF8:

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

确保在 HTML (head) 中使用正确的编码,尝试:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

如果这没有帮助,请尝试不同的编码,例如 ISO-8859-1

于 2012-08-04T06:32:49.310 回答
16

试试这个:

mysqli_set_charset($con, "utf8");

连接到数据库后。

于 2013-11-04T18:58:18.363 回答
6

把这个留给那些通过谷歌来到这个网站的人,因为他们有同样的问题,但使用 PDO 代替(像我一样) - 你应该没问题:

$dns = "mysqli:host=localhost;dbname=db_name";
$pdo = new PDO($dns, 'db_user', 'db_pass',
        array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$pdo->exec("SET CHARACTER SET 'utf8'"); 
于 2013-05-27T11:09:13.723 回答
1

我浪费了很多时间,直到我弄清楚了。

简介: 希腊字符在 mysql 中出现错误。我在 PHP 中应用了 qxxx答案并且工作正常。然后我不得不将所有内容迁移到新主机上,然后问题再次出现。

什么问题?

MySQL 的模式字符集设置为拉丁文。存储过程为其参数继承了 MySQL 的模式字符集。

所以我做了什么:

  1. 删除 MySQL 过程/函数(确保备份代码)

  2. 更改了 MySQL 的默认字符集(使用 MySQL Workbench,右键单击您的数据库名称 - 有一个 db 图标..)

  3. 重新创建 MySQL 过程/函数

另外,我完整地保留了qxxx的修复程序!

于 2013-08-30T12:29:40.757 回答
1

您不必删除表或任何东西。使用 MySQL Workbench 并转到每个表。将排序规则更改为 utf8 - 默认排序规则或 utf8 - 通用 ci。然后对类型为 Varchar 的每一列执行相同的操作 - 它位于窗口底部。

于 2015-10-13T09:57:38.633 回答
0

我在实现希腊字符时遇到了同样的问题。像 mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET 'utf8'");这样的解决方案对我不起作用。谷歌搜索后,我发现数据库排序规则的字符集应该greek_general_ci与存储数据的字段(如类别名称等)一起制作。这解决了我的问题。

于 2014-01-03T16:25:44.280 回答