本地服务器废墟字符编码

时间:2013-03-11 20:58:32

标签: php encoding character-encoding wamp localserver

我需要很好地学习所有这些编码内容。因为这是我第三次用愚蠢的错误编码问题浪费我的时间。这是问题:
我有一个简单的php文件。

  • 文件的格式为UTF-8
  • 如果我运行本地服务器,则会生成ı => ıö => Ãœ
  • 如果我将扩展名重命名为HTML,它可以完美地运行,所以问题是本地服务器,定义。

要解决此问题,我已完成以下操作

  1. 我看过thisthisthis
  2. 仔细检查文件编码,它是UTF-8
  3. 添加了元标记<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. 在php标记内添加了标题:header("Content-type:text/html; charset: UTF-8");
  5. 在php标记mb_internal_encoding('UTF-8');
  6. 中添加了内部编码
  7. 更正了 php.ini 文件default_charset = UTF-8
  8. 中的行
  9. 在httpd.conf文件中添加了以下内容:AddDefaultCharset utf-8
  10. 一切都是硬编码的,所以我不使用数据库,它与mysql编码无关
  11. 我正在使用WAMP,而机器是Windows 7英语。我已经筋疲力尽,因此,我真的需要帮助。
    感谢。

2 个答案:

答案 0 :(得分:0)

检查文档编码是否为没有BOM的UTF-8

如果不起作用请尝试utf8_encode() and utf8_decode()

修改

$text = "A strange string to pass, maybe with some ø, æ, å characters."; 

foreach(mb_list_encodings() as $chr){ 
        echo mb_convert_encoding($text, 'UTF-8', $chr)." : ".$chr."<br>";    
 } 

答案 1 :(得分:0)

最后我发现了问题。我写了

header("Content-type:text/html; charset: UTF-8"); 

Content-Type之后,我们需要放置:但在Charset之后我们需要放置等号=,这对我来说非常令人沮丧。所以,

header('Content-Type: text/html; charset=utf-8');

解决了这个问题。