Mysql5字符集编码设置问题
写入数据库后再读取数据库内容,在phpMyAdmin显示正常,运行程序结果为乱码。
修改数据库类增加了mysql_query(“SET NAMES ‘utf-8′”); ,但结果还是这样,
之后发现是mysql的utf-8应该改为utf8,修改执行如下语句解决该问题。
mysql_query(“SET NAMES ‘utf8′”);
写入数据库后再读取数据库内容,在phpMyAdmin显示正常,运行程序结果为乱码。
修改数据库类增加了mysql_query(“SET NAMES ‘utf-8′”); ,但结果还是这样,
之后发现是mysql的utf-8应该改为utf8,修改执行如下语句解决该问题。
mysql_query(“SET NAMES ‘utf8′”);
php系统的GBK源码转UTF-8之后,程序无法运行,查找后发现是UTF8的BOM签名导致文件多3个字节的问题。
所以之后就寻找清除BOM的方法。确实大多数编辑器都支持这个功能,如EditPlus,UltraEdit,Komodo等,不过效果却有些差异。
感觉最可靠的是komodo另存的文件,转换效果好。EditPlus如果如下文中说的方法设置为“总是删除签名”,保存的文件结尾总会多些字符,反而更麻烦了,大家可以注意下这个问题,不知道是不是我的EditPlus版本问题。

以下是引用的一些详细说明:
产生这个问题通常是在用UTF-8编码进行开发。
·IE里面会发现页面里多了一行空白,而且排除是CSS的原因。
·firefox的firebug插件里看DOM树,会发现HTML多了一行空白,但是在页面样式里面没有影响。
·把页面代码放在UltraEdit下面的十六进制下面看,会发现在空白产生的地方,会有一个“锘?”字符,而本来的”<“符号没了。

要是单个页面的话,就出现在该页面的第一个字符位置。
要是出现在你包含文件的话,那就在该包含文件的第一个字符位置。
———-
说明:
这就是utf-8的签名导致的问题。
UTF- 8签名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记。如果多个文件设置了签名,在二进制流中就会包含多个UTF-8签名,而IE是无法识别多个 UTF-8签名的,所以用一个空行来代替,在某些程序处理中还会出现一个类似“锘?”的字符。
W3C官方的说明: http://www.w3.org/International/questions/qa-utf8-bom
用UltraEdit在十六进制模式下,复制另外的”<“去覆盖掉这个头部的”锘?”
并且去掉编辑器里面的BOM签名,以免再次出现。
———————-
具体每种编辑器的话如下所示。
Editplus设置办法如图:

UltraEdit设置办法如图:

Notepad++:
