当前位置: 首页 > news >正文

【转】.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.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.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

分类:  数据库技术

相关文章:

  • 微信公众号开发
  • 快排
  • PHP——大话PHP设计模式——PSR-0规范
  • oracle EBS dba SQL scripts
  • Fundamental Components Of An Event-Driven Archi...
  • 移动周报:十款最实用的Android UI设计工具
  • implicit declaration of function 'copy_from_user'
  • 灯标技术--向服务器发送信息而不需要服务器返回信息
  • 虚基类虚继承
  • 导出无法正常启动的VMware虚拟机中的文件
  • CentOS 下的邮件通知
  • Linux内核--usb子系统的分析
  • 安装db2 提示不是有效的win32应用程序?
  • 建站须知
  • Java中如何实现类似C++结构体的二级排序
  • 【前端学习】-粗谈选择器
  • classpath对获取配置文件的影响
  • github从入门到放弃(1)
  • GitUp, 你不可错过的秀外慧中的git工具
  • Hibernate最全面试题
  • Koa2 之文件上传下载
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Shell编程
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • sublime配置文件
  • VUE es6技巧写法(持续更新中~~~)
  • vue:响应原理
  • 利用jquery编写加法运算验证码
  • 数据结构java版之冒泡排序及优化
  • 数组的操作
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • (done) 两个矩阵 “相似” 是什么意思?
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (Python第六天)文件处理
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (一)为什么要选择C++
  • (原)Matlab的svmtrain和svmclassify
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET中winform传递参数至Url并获得返回值或文件
  • /*在DataTable中更新、删除数据*/
  • @javax.ws.rs Webservice注解
  • []T 还是 []*T, 这是一个问题