我在一個web應用程序中遇到了一個奇怪的問題。奇怪的PHP charset問題?
它是存儲關於金屬製品數據的應用程序,因此使用O形符號很多。 當我在Windows 7或我的Vista電腦上運行應用程序(都是32位)時,Ø被存儲爲Ø。 當我在Windows 8(64位)上運行應用程序時,Ø被存儲爲oslash;我不想要。
我在所有系統上使用的應用程序,阿帕奇,MySQL和PHP的版本相同。配置文件(httpd.conf和php.ini)和路徑一樣好(路徑除外)。
而且當我和我的Windows 8連接與在Windows 7的Vista中運行的應用程序,一切工作正常,O是存儲爲Ø。 反過來,使用Vista在Windows 8上運行應用程序,然後我得到oslash;
我的HTML頁面包含:
<meta http-equiv="Content-type" content="text/html;charset=utf-8"/>
PHP頁面開始:
header("Content-Type: text/html; charset=utf-8");
date_default_timezone_set('Europe/Brussels');
DB訪問:
mysql_query("SET NAMES UTF8");
和我用下面從HTML獲得價值PHP:
htmlentities($_POST[$name]);
但是,這並不能真正成爲問題,因爲它適用於WIN7/Vista的
任何人有一個想法是什麼可能是這個問題,我該如何解決?
在此先感謝
mysql與此無關。它將**從不**爲你做實體編碼。這不是它的工作。如果你用oslash取出oslash,那是因爲你首先把oslash塞進了mysql。 – 2014-09-03 18:44:06
你應該只使用'htmlentities'和'echo'結合。不要在插入數據庫的值上使用它。 – GhostGambler 2014-09-03 19:20:18