以下所描述无理论依据纯属经验谈
MySQL使用以上版本管他是什么字符集一律使用默认不用去设置MySQL
然后举个使用GB和UTF的例子
好你只要保证你的写着INSERT SQL语句的PHP文件编码为GB恭喜你你使用写着SELECT SQL语句的GB编码的PHP文件读取出来的数据也是GB的同理只要你插入数据库的PHP文件是UTF编码那么你录入的就是UTF的读取出来同样使用编码为UTF的读取
如果我录入为GB显示要使用UTF怎么办?
如果你的所有PHP文件为UTF编码那么你在INSERT的时候就必须使用iconv进行编码转换将str转为GB入库读取也一样使用iconv转为UTF显示
你的前端页面使用什么编码那么你那些字符串已经被该种编码编过了所以尽管入库他的机器码肯定就是那样的不管存放在哪里不管MYSQL指 定为何种编码他在录入数据的时候并不会对你的数据进行转换只要保证你的前端录入使用UTF那么你读取的也是UTF
为什么使用PHPMYADMIN导入总是有问题呢?
我没有研究过PHPMYADMIN的工作原理但是他的PHP文件都是UTF编码的也就是这样导入数据都是UTF的你采用GB的PHP文件来读取当然一堆乱解决办法我猜有三种
读取的时候使用SET NAME将其编码转换不知道可行不 读取后使用iconv将其转为GB 不用PHPMYADMIN导入自己写个GB的PHP脚本导入即可总之一句话你录入的时候采用什么编码那么你读取的时候他就是什么编码你想把这种编码显示成另外一种编码那么你需要使用iconv或者mbstring将其进行编码转换
以上仅为个人实际经验没时间研究理论欢迎大家探讨或者有错误请指正