我有一个带有一些文字和文字的表是希腊字母,当我使用sql工具并选择此表中的数据显示正确
但是当我使用mysql_fetch数组显示我的网站前端时,当echo显示如下
任何人都知道如何解决此错误 谢谢。
答案 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的模式字符集。
所以我做了什么:
删除MySQL程序/功能(确保备份代码)
更改了MySQL的默认字符集(使用MySQL Workbench,右键单击您的数据库名称 - 有一个数据库图标..)
重新创建了MySQL程序/函数
另外,我完整地保留了 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等。这解决了我的问题。