asp.net+mySql 乱码解决办法(转贴)

caodayong 2005-07-13 02:33:40
晚上做东西,出现网页从mysql数据库中读中文数据时出现乱码,但是csdn中没有检索出来答案,好像很多人对次都有些迷糊,后来查到一份资料,证明是好用的,转贴给大家:

MySQL的中文用的是iso8859-1的编码,然而,还有很多很多的ASP.NET 中文网页,我们设定的都是gb2312的编码。所以,出现乱码应该是必然的,不出现乱码问题才大.
既然网页用的是gb2312的编码,那么,解决的办法就是在提交数据的时候做一个转换。我改写了这么一个程序,(以下所有编码皆为VB编码)

Function gb2312_iso8859(ByVal src As String)
Dim iso, gb2312 As System.Text.Encoding iso = System.Text.Encoding.GetEncoding("iso8859-1")
gb2312 = System.Text.Encoding.GetEncoding("gb2312")
Dim gb As Byte()
gb = gb2312.GetBytes(src)
Return iso.GetString(gb)
End Function
这个程序就是把一个gb2312的string 转换成一个 iso8859-1的String. 然后再提交上去。同样的从数据库那边拿过来的数据如果要在gb2312 的网页上正常显示,我们需要把数据从iso8859-1转换成bg2312. 按上面的程序改写如下:

Function iso8859_gb2312(ByVal src As String)
Dim iso, gb2312 As
     System.Text.Encoding iso = System.Text.Encoding.GetEncoding("iso8859-1")
gb2312 = System.Text.Encoding.GetEncoding("gb2312")
Dim isoResult As Byte() isoResult = iso.GetBytes(src) Return gb2312.GetString(isoResult)
End Function
而且,如果你用的是dataset 你可以把整个dataset 放到一个暂时性的 xml 文件,用同样的方法把这个文件的编码给转换了,编码如下:
Dim xml As Stringxml = ds.GetXml()ds.Clear()
Dim iso, gb As
System.Text.Encodinggb =System.Text.Encoding.GetEncoding("gb2312")
iso= System.Text.Encoding.GetEncoding("iso8859-1")
Dim ub As Byte()ub = iso.GetBytes(xml)xml = gb.GetString(ub)ds.ReadXml(New System.IO.StringReader(xml))
就是这样.通过这个转换之后,dataset 直接可以用作各种控件的datasource, 中文显示正常。
...全文
404 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DeltaCat 2005-07-13
  • 打赏
  • 举报
回复
只要指定MYSQL的默认字符集为 GB2312 就 OK 了,何必这么麻烦
fanweiwei 2005-07-13
  • 打赏
  • 举报
回复
up
colinliu 2005-07-13
  • 打赏
  • 举报
回复
在web.config中設置語言格式uf-8
caodayong 2005-07-13
  • 打赏
  • 举报
回复
但事实上的确有乱码,我用的是mysql 4.1版本,希望大家尝试一下再说!
速马 2005-07-13
  • 打赏
  • 举报
回复
也许这只能说明MySQL的驱动有问题
数据库内部如何存储字符和上层程序应该无关,也就是说,通过驱动获得的查询结果,既然是面对.NET的(输出string),那就不应该有乱码嗯(又不是直接输出byte[])

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧