问题描述
最近在写网页程序的时候碰到了中文乱码的问题,按说是没有错的,读写都设置了字符编码集:mysql_set_charset('utf-8')
,但写到mysql数据库中的数据就是乱码。
找了另外一个程序传到服务器上,一切正常!查了半天,唯一的差别在于:那个程序是这样的:mysql_set_charset('utf8')
,比我的少了一个-
号,很纳闷,-
号怎么省了?搜索了各大论坛,得出了一些答案。
分析
首先,UTF-8
、utf-8
、utf8
代表的是同一种编码格式,都是采用unicode
编码,这种编码包含了各国文字(据说还有外星文…),一般每个字符占2-4个字节。
至于它们的不同之处在于:
1、UTF-8
与 utf-8
,大小写形式不同罢了,基本没有差异。
2、另外再说utf8
,其实到目前为止,我也只在Mysql数据库中见过。至于为什么这么写,有网友说,这是Mysql数据库遗留的的一个bug,坑了无数程序猿,但是我觉得,这种说法只是一个笑话罢了;另一个原因,我觉得还是比较可靠的,就是mysql指令中含有运算符号,而utf-8
中的-
恰好就是减号,为了指令分析的便捷,故将-
省去,得utf8
。
总结
仅在mysql中使用utf8
,其他地方为UTF-8
或utf-8
。