鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

UTF-8、utf-8、utf8的那些事

问题描述

最近在写网页程序的时候碰到了中文乱码的问题,按说是没有错的,读写都设置了字符编码集:mysql_set_charset('utf-8'),但写到mysql数据库中的数据就是乱码。

找了另外一个程序传到服务器上,一切正常!查了半天,唯一的差别在于:那个程序是这样的:mysql_set_charset('utf8'),比我的少了一个-号,很纳闷,-号怎么省了?搜索了各大论坛,得出了一些答案。

分析

首先,UTF-8utf-8utf8代表的是同一种编码格式,都是采用unicode编码,这种编码包含了各国文字(据说还有外星文…),一般每个字符占2-4个字节。

至于它们的不同之处在于:

1、UTF-8utf-8 ,大小写形式不同罢了,基本没有差异。

2、另外再说utf8,其实到目前为止,我也只在Mysql数据库中见过。至于为什么这么写,有网友说,这是Mysql数据库遗留的的一个bug,坑了无数程序猿,但是我觉得,这种说法只是一个笑话罢了;另一个原因,我觉得还是比较可靠的,就是mysql指令中含有运算符号,而utf-8中的-恰好就是减号,为了指令分析的便捷,故将-省去,得utf8

总结

仅在mysql中使用utf8,其他地方为UTF-8utf-8