2012-12-13 232 views
0

UTF8字符有一个非常奇怪的问题。发帖时UTF8无法正常工作

我有以下几点:

  • 我所有的文件都是UTF-8

  • 我使用(在我的形式):accept-charset="utf-8"

  • 我得到:<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

但由于某些原因,当我发布UTF 8个字符,如:ö ä å 然后我回显$ _GET []输出显示:���

感觉就像我尝试过的一切,所有的帮助都非常欢迎! :)

+0

您在标题为发送的Content-Type是什么也很重要。 –

+0

听起来很愚蠢,但你是否在UTF-8编码页面上捕获$ _POST变量? –

+0

是啊,我在UTF-8编码的页面上捕捉它,这是很奇怪:( – Elvin

回答

7

浏览器将发送数据以相同的编码,您宣布要页。为了进行完整性测试,请运行以下页面:

<?php 
header("Content-Type:text/html; charset=utf-8"); 
$file = basename(__FILE__); 
if(isset($_POST['data'])) { 
    echo $_POST['data']; 
} 
else { 
    echo <<<HTML 
     <form method="POST" action="$file"> 
      <input name="data" type="text"> 
      <input type="submit"> 
     </form> 
HTML; 
} 

将“äöä”写入表单并查看是否正确。如果不是,请检查您的MBSTRING INI值:

<?php 

var_dump(
    ini_get("mbstring.http_input"), 
    ini_get("mbstring.http_output"), 
    ini_get("mbstring.encoding_translation") 
); 

正确的价值观是:

string(4) "pass" 
string(4) "pass" 
string(1) "0" 
+0

是的,我是越来越相同?字符串: – Elvin

+0

我得到这些值:字符串(4)“自动”字符串(4)“SJIS”字符串(1)“1” – Elvin

+0

@Elvin在php中更改为“传递”和编码转换为0。 ini或mbstring.ini,然后重新启动php – Esailija