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