2016新编MySQL字符集及MySQL编码转换MySQL字符集及MySQL编码转换时间:2006-05-1414:39:11类别:,里面提到从latin1到UTF8的MySQL编码转换。收藏一下,最近要将所有的数据库都转一次,一直错误的使用latin1,再不转以后麻烦大了。出处:未知个人建议,数据库字符集尽量使用utf8(utf-8),以使你的数据能很顺利的实现迁移,因为utf8字符集是目前最适合于实现多种不同字符集之间的转换的字符集,尽管你在命令行工具上无法正确查看数据库中的内容,:>CREATEDATABASEIFNOTEXISTSmy_dbdefaultcharsetutf8COLLATEutf8_general_ci;#注意后面这句话"COLLATEutf8_general_ci",大致意思是在排序时根据utf8编码格式来排序#那么在这个数据库下创建的所有数据表的默认字符集都会是utf8了mysql>createtablemy_table(namevarchar(20)notnulldefault'')type=myisamdefaultcharsetutf8;#这句话就是创建一个表了,:<?phpmysql_connect('localhost','user','password');mysql_select_db('my_db');//请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的//它的作用是设置本次数据库联接过程中,数据传输的默认字符集mysql_query("setnamesutf8;");//必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数mysql_query(mb_convet_encoding("insertintomy_tablevalues('测试');","utf-8","gb2312"));?>通过页面提交插入数据:<?php//输出本页编码为utf-8header("content-type:text/html;charset=utf-8");mysql_connect('localhost','user','password');mysql_select_db('my_db');if(isset($_REQUEST['name')){//由于上面已经指定本页字符集为utf-8了,因此无需转换编码mysql_query(sprintf("insertintomy_tablevalues('%s');",$_REQUEST['name']));}$q=mysql_query("select*frommy_table");while($r=mysql_fetch_row($q)){print_r($r);}?><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><formaction=""method="post"><inputtype="text"name="name"value=""><inputtype="submit"value='submit'></form>自此,,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中文在命令行工具中插入数据,,如果担心查询排序等问题,可以使用binary属性约束,例如:createtablemy_table(namevarchar(20)binarynotnulldefault'')type=myisamdefaultcharsetlatin1;附:旧数据升级办法以原来的字符集为latin1为例,升级成为utf8的字符集。原来的表:old_table(defaultcharset=latin1),新表:new_table(defaultcharset=utf8)。第一步:导出旧数据mysqldump--default-character-set=latin1-hlocalhost-uroot-Bmy_db--tablesold_table>:转换编码iconv-tutf-8-fgb2312->,假定原来的数据默认是gb2312编码。第三步:,增加一条sql语句:"SETNAMESutf8;",保存。mysql-hlocalhost-uro
2016新编MySQL字符集及MySQL编码转换 来自淘豆网m.daumloan.com转载请标明出处.