PHP MySQL希腊字母显示像????分数

时间:2012-08-04 05:54:43

标签: php mysql character-encoding

我有一个带有一些文字和文字的表是希腊字母,当我使用sql工具并选择此表中的数据显示正确 Image for SQL Query Results

但是当我使用mysql_fetch数组显示我的网站前端时,当echo显示如下 enter image description here

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

7 个答案:

答案 0 :(得分:15)

尝试以下方法:

连接到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

答案 1 :(得分:12)

试试这个:

mysqli_set_charset($con, "utf8");

连接到数据库后。

答案 2 :(得分:4)

对于那些通过谷歌来到这个网站的人来说,这是因为他们有相同的问题但是使用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'"); 

答案 3 :(得分:1)

我浪费了很多时间,直到我想出来。

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

出了什么问题?

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

所以我做了什么:

  1. 删除MySQL程序/功能(确保备份代码)

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

  3. 重新创建了MySQL程序/函数

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

mysql_query(“SET NAMES'utf8'”); mysql_query(“SET CHARACTER SET'utf8'”);

对我也有效!

在我的情况下,我设置如下

Database engine: InnoDB
 Character set: Latin1
 Collation: latin1_spanish_ci

 Tables
  Character set: Latin1
  Collation: latin1_spanish_ci
     (on all varchar fields)

然后我将我与MySQL的连接修改为:

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
    $hostname_connName = "localhost";
    $database_connName = "*database_name*";
    $username_connName = "*database_username*";
    $password_connName = "*database_pw*";
    $connName = mysql_pconnect($hostname_connName, $username_connName, $password_connName) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
?>

并添加了MilMike提到的查询行以使其正常工作!

答案 6 :(得分:0)

我在实施希腊字符时遇到了同样的问题。像mysql _ query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET 'utf8'");这样的解决方案对我不起作用。在谷歌搜索之后,我发现,数据库整理的字符集应该是greek_general_ci以及数据将被存储的字段,如categoryname等。这解决了我的问题。