我在GoDaddy(共享Windows服务器)上托管了一个网站,我前段时间使用过程PHP和MySQL数据库编写了这个网站。数据库中的某些表包含用户通过某些页面插入的数据,在某些情况下,它们会插入希腊文本。直到最近,当我被告知该网站出于某种原因被关闭时,一切都在过去的3到4年内正常运行。我联系了GoDaddy,他们告诉我这应该是我的脚本的一个问题,但我很久没有对代码进行任何更改了。无论如何,显然它在同一天没有做任何事情就解决了,所以我猜这是他们服务器的问题,虽然他们告诉我他们身边没有任何改变。
问题是,从那时起,显示从数据库中选择的希腊字符的所有页面显示它们如下:ÎÎÎÎÎÎÎÎÎÎÏÏÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ我知道它们存储在数据库中(当我用phpMyAdmin访问它时),但我认为这是正常的,因为当它们被选中并显示在页面中时它们很好。所以我不知道现在发生了什么,他们停止正确出现。顺便说一下,希腊字符(不是来自数据库)在页面中正确显示。我相信,我已经在互联网上搜索了很多这方面的内容,并尝试了所有可能的解决方案。我检查过的一些事情(从另一个SO答案中复制):
我在头文件中使用以下代码:
header('Content-Type: text/html; charset=utf-8');
然后在html head:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
我使用以下代码连接到我的数据库连接文件中的数据库:
$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error() );
mysqli_set_charset($dbc, 'utf8');
服务器运行的是PHP版本5.2.17,MySQL版本是5.0.96。
另一个奇怪的事情是,当我导出数据库并在本地导入(使用XAMPP)并使用与网站上相同的PHP文件时,希腊字符在页面上正确显示。但是,我的笔记本电脑上的XAMPP正在运行PHP版本5.4.7,而MySQL则是版本5.5.27。
任何建议都将不胜感激。
由于
答案 0 :(得分:1)
您期待Άλλο Αίτημα
吗?做SELECT HEX(col)...
- 这是正确的十六进制:CE86 CEBB CEBB CEBF 20...
;这将是“双重编码”:C38E E280A0 C38E C2BB C38E C2BB C38E C2BF 20...
答案 1 :(得分:0)
default_charset = "utf-8";
使用htaccess文件
AddDefaultCharset UTF-8
试验:
<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
</body>