从SQL Server中读取UTF-8字符串并在VB6控件中显示

问题描述 投票:2回答:1

我试图从记录集中读取UTF-8字符集(VB6控件上的英语或日语以外的英语语言,例如中文或日语),这是我从记录集读取的字符总为'???'的查询结果。 (问号),我经历了很多线程,但是找不到任何可以帮助我在从记录集获取的VB6控件上显示Unicode字符的内容。

ADODB.Stream具有字符集之类的属性,因此我们可以将字符集设置为UTF-8。我们在ADODB.Recordset中是否也有什么东西可以从数据库中读取UTF-8字符?

Private Sub Command1_Click()

Dim zConnectString As String
Dim zConnection As ADODB.Connection
Dim record As ADODB.Recordset
Dim zServerName As String
Dim zDBUser As String
Dim zDBPassword As String
Dim com As String
Dim data As String
Dim cmd As ADODB.Command

zServerName = SERVER_IP
zDBUser = USER
zDBPassword = PWD

zConnectString = "Provider=MSDASQL;Driver=SQL Server Native Client 11.0; Server=" & zServerName & "; UID=" & zDBUser & ";PWD=" & zDBPassword
zConnectString = zConnectString & ";Network=DBMSSOCN"

Set zConnection = New ADODB.Connection
zConnection.ConnectionString = zConnectString
zConnection.CursorLocation = adUseClient


zConnection.Open

Dim rsRecCount As Integer

Set cmd = New ADODB.Command
cmd.ActiveConnection = zConnection
cmd.CommandText = "select PU_Desc from [SOADB].[dbo].[Prod_Units_Base] where PU_Id =22"
cmd.CommandType = adCmdText

Set record = New ADODB.Recordset
record.CursorLocation = adUseServer

record.Open cmd, , adOpenForwardOnly, adLockReadOnly


rsRecCount = record.RecordCount

Dim StrUnicode As String


Dim x As String
While Not record.EOF
    x = record!PU_Desc 
    record.MoveNext
Wend
Text1.Text = x    
End Sub

上面是示例应用程序,我正在读取x中的记录集,并将值获取为'??'

下面是查询,PU_Desc数据类型= Nvarchar [100]

select PU_Desc from [SOADB].[dbo].[Prod_Units_Base] where PU_Id =22

PU_Desc = 锅炉
sql-server unicode utf-8 vb6
1个回答
0
投票

您可以尝试使用此组件中的控件(例如:文本框)显示数据:

Project -> Components -> Microsoft Forms 2.0 Object Library

而且,最重要的是直接从Recordset中分配值。

注意:与默认控件(例如:文本框)相比,某些属性有所不同

希望有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.