我是靠谱客的博主 羞涩过客,最近开发中收集的这篇文章主要介绍.Net+MySQL组合开发(三) 乱码篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

所用工具MySQL5.022
VS2005 Team Suite
MySQL Connector Net 5.0.3
EMS SQL Manage 2005 For MySQL使用过MySQL的朋友都知道有乱码问题困扰,而出现此问题都是因没有正确设置其编码造成;
假设现在要做一个简体中文网站;
一、设置数据库编码
安装mysql时可选择编码,如果已经安装过,可以更改文件my.ini(此文件在mysql的安装目录下)中的配制以达到目的;打开文件找到两处:
None.gif [client]
None.gif
None.gifport=3306
None.gif
None.gif[mysql]
None.gif
None.gifdefault-character-set=gb2312

None.gif # The default character set that will be used when a new schema or table is
None.gif# created and no character set is defined
None.gifdefault-character-set=gb2312
更改红色部分为gb2312
此时新建数据库后,数据库目录下有个db.opt文件,内容如下:
None.gif default-character-set=gb2312
None.gifdefault-collation=gb2312_chinese_ci
编码数据库一致
二、客户端工具编码

编码设置与数据库
编码相同,可以用客户端工具直接写入数据,不产生乱码;
三、web.config中设置
连接字符串中的编码,MySQL Connector Net 5.0.3用
None.gif < connectionStrings >
None.gif    
< add  name ="MySqlServer"  connectionString ="Data Source=127.0.0.1;User ID=root;Password=123;DataBase=BOOK;Charset=gb2312" />
None.gif  
</ connectionStrings >
读取写入的编码
None.gif < globalization  responseEncoding  ="gb2312"  requestEncoding  ="gb2312" />


OK,此时设置完成,做好的网站即一个简体中文网站,不会有乱码的;
如果需要做一个繁体网站,把以上设置编码的地方变成"gbk"即可。

常见问题:
Character set 'gbk' is not supported
出现此问题,十有八九可能你用了底版本的MySQL Connector ,因为在MySQL Connector 1.07中提供的字符编码是有限的,找到不到web.config中设置的编码类型,没有gbk,不过好像有big5,具体请看MySQL Connector 1.07源码中的CharSetMap.cs文件,其中

None.gif public   static  CharacterSet GetChararcterSet(DBVersion version,  string  CharSetName)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            CharacterSet cs 
= (CharacterSet)mapping[CharSetName];
InBlock.gif            
if (cs == null)
InBlock.gif                
throw new MySqlException("Character set '" + CharSetName + "' is not supported");
InBlock.gif            
return cs;
ExpandedBlockEnd.gif        }

 

None.gif private   static   void  LoadCharsetMap()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif   mapping.Add(
"latin1"new CharacterSet("latin1"1));
InBlock.gif            mapping.Add(
"big5"new CharacterSet("big5"2));
InBlock.gif   dot.gifdot.gif.
ExpandedBlockEnd.gif}

而MySQL Connector 5.03中提供的字符编码相当全面了,所以建议使用5.03,不过5.03与旧版本的mysql数据库有些地方不太兼容。在执行存储过程等大的数据操作时会出现:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding

最后

以上就是羞涩过客为你收集整理的.Net+MySQL组合开发(三) 乱码篇的全部内容,希望文章能够帮你解决.Net+MySQL组合开发(三) 乱码篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部