当前位置:编程学习 > C#/ASP.NET >>

vb.net 数据编码问题

我用的是vb.net 2003,数据库是mysql4.0.26(utf8)
从数据库读出来的是乱码,我进行编码转换,代码如下:

' 定义并创建数据库连接和访问对象

 Dim cn As New ADODB.Connection
 Dim rs As New ADODB.Recordset

' 定义数据库连接字符串变量

 Dim strCn As String

 ' 定义数据库连接参数变量

 Dim db_host As String
 Dim db_user As String
 Dim db_pass As String
 Dim db_data As String

' 定义 SQL 语句变量

 Dim sql As String

' 初始化数据库连接变量

 db_host = "localhost"
 db_user = "root"
 db_pass = ""
 db_data = "wntest"

' 连接数据库

 strCn = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=" & db_host & ";" & "DATABASE=" & db_data & ";" & "UID=" & db_user & ";PWD=" & db_pass & ";" & "OPTION=3;"

 cn.Open(strCn)
 
 ' 设置该属性, 使 recordcount 和 absolutepage 属性可用
 cn.CursorLocation = ADODB.CursorLocationEnum.adUseClient
 
 '查询数据库,用于测试
 sql = "select * from tbu_country where COUNTRYCODE='AO'"
 rs.Open(sql, cn)
 rs.MoveFirst()
 
 '下面是进行编码转换
 Dim tmpBy() As Byte
 Dim newBy() As Byte 
 
 newtest = rs.Fields(1).Value  (从mysql数据库里读出来的值“安哥拉”,不过是乱码)

 '编码转换
 tmpBy = System.Text.Encoding.UTF8.GetBytes(newtest)
 newBy = System.Text.Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Default, tmpBy)

 Console.WriteLine(System.Text.Encoding.UTF8.GetString(newBy))
 
 问题:数据库里的值是"安哥拉",可是进行转码以后就变成"安哥"了,"拉"字就没了,如果数据库的值为偶数的话(2,4或6..)读出来的是正常,如果是奇数(1,3,5....)转码以后就会少一位。

 同理:插入时也是一样的,如果是偶数汉字进行转码后(utf8)插出数据库是正常,奇数就会报错说sql语句错误,我在后面只要加上"\r"就会正常写入了.

 现在主要就是读怎么办,我怀疑是数据库的问题,可是不知道怎么解决,请指教,谢谢!!!!!!!!!
  --------------------编程问答-------------------- 自己顶一下,请各位大大们帮一下忙,谢谢 --------------------编程问答-------------------- 自己顶一下,请各位大大们帮一下忙,谢谢 --------------------编程问答-------------------- 自己在顶一下,请各位大大们帮一下忙,谢谢 --------------------编程问答-------------------- 不懂,帮你顶一下 --------------------编程问答-------------------- 首先你要确定数据库中存储的是什么编码。例如使用某些客户端工具读取一下数据库,看是否正常。 --------------------编程问答-------------------- 我的数据库用的是utf8

我用PHP操作过数据库,读出来的一切正常,我现在要用vb.net读mysql的数据,读出来的是乱码,经过Encoding转成vb.net显示出来的编码,可转成以后丢失汉字,只有奇数汉字丢失,不明白,请指教,谢谢
--------------------编程问答-------------------- 没用过mysql,帮顶 --------------------编程问答-------------------- 顶顶顶,哪位大大帮一下忙,谢谢 --------------------编程问答-------------------- http://dev.mysql.com/tech-resources/articles/dotnet/
http://www.howmag.com.cn/software/p149/A14918322.shtml
连接mysql是用oledb名称空间吗?我在网上查觉得是不是要用oledb呢? --------------------编程问答-------------------- 连接mysql是用oledb名称空间吗?我在网上查觉得是不是要用oledb呢?
========================================================
是不是该用odbc名称控件来操作呢? --------------------编程问答-------------------- 你最好查看一下数据库使用什么代码页保存

这是其一

其二,你可以用Decoder 试试解码,在同一个命名空间下
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,