我在一个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