关于php:土耳其语字符显示不正确

Turkish characters are not displayed correctly

本问题已经有最佳答案,请猛点这里访问。

MySQL数据库使用UTF-8编码,数据存储正确。我使用set_name utf8 query来确保调用的数据是UTF-8编码的。只要头字符集是UTF-8,数据库中的所有变量都可以正常工作,但静态HTML字符不能正常工作。当我将头字符集设置为ISO-8859-9时,变量的显示会有所不同,而HTML字符工作正常。有人能帮我吗?utf8编码:http://oi48.tinypic.com/289kje1.jpg html标记在显示值时有问题。但是php数据(绿色的例如a?我?LER)来自数据库的代码是OK.iso编码http://oi50.tinypic.com/287n2ph.jpg这次HTML正常,但PHP数据显示错误。

1
2
3
4
5
6
7
<?php
    header('Content-Type: text/html; charset=ISO-8859-9');
    ?>
    <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>noname
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


您可以尝试在文件顶部显式添加内容类型,如下所示

1
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

并从代码中删除以下内容。

1
header('Content-Type: text/html; charset=ISO-8859-9');

更新:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Untitled Document
</head>
<body>
<?php echo"for example ? and ?"; ?>  
</body>
</html>

上面的代码给出了下面的输出:

enter image description here


因此,如果您告诉浏览器将数据库中的数据解释为utf-8,这意味着数据是utf-8编码的。如果您告诉浏览器将其解释为ISO-8859,则HTML代码可以工作,这意味着HTML是用ISO-8859编码的。

所以你有一个混合编码的文档。把这两个放在一起。将源代码文件保存为utf-8,并告诉浏览器将其解释为utf-8,或者从ISO-8859中的数据库中获取数据,并告诉浏览器将其解释为utf-8。