近开发php网站,遇到非常奇怪的问题。
  我用SESSION先存储了用户登录信息,然后在另外页面读取SESSION值。在本地测试完全没有问题,一切良好。但是上传到服务器后,发现居然读取不到SESSION值。于是我以为可能是需要在页面顶部已启动SESSION立即取回SESSION值到变量,修改后好像还是没有解决问题。再次检查,发现一输入或输出中文内容出现乱码,而且同时SESSION取不到值,因为SESSION是在处理数据库后设置的,所以估计可能是数据库有问题。仔细查看数据库,发现数据库的编码是GBK,而我的页面使用UTF-8编码。于是修改数据库编码为UTF8-UNICODE-CI。然后再在连接数据库的PHP代码后加上:
  mysql_query("SET NAMES 'UTF8'");
  mysql_query("SET CHARACTER SET UTF8");
  mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");
  测试通过!
  看来编码问题一定要小心,不同的服务器设置不同,一定要调整一致,而且数据库编码、代码编码、网页编码一定要三者完全统一编码,才能避免这种问题。