2012-12-13 166 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