我在做了一个基督教大词典的电子查询,但是遇到一点问题,数据库中的一些拉丁文不能正常的显示出来。如果遇到拉丁文,它就会以一个问号代替显示。请问如何解决。代码一般都和以下差不多,但如果objRS("内容")中有拉丁文,则Text1.text的相应部分就会以“?”代替相应的拉丁文。
objRS.Open "select 内容 from christDic where 中文词条='" & Node.Text & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Do While Not objRS.EOF
'MsgBox TypeName(objRS("内容"))
Text1.Text = objRS("内容")
objRS.MoveNext
Loop
Set objRS = Nothing
。
拉丁文点这里www.bigyi.net/christ.zip中的表christDic.另外在treeview控件,combox控件中也都存在同样的问题。我在金山词霸上试着输入一个拉丁文,结果是不行的。但在所有微软的记事本,写字版上却都可显示。后来我又改用richbox,但也不行。请问这种问题如何解决。
objRS.Open "select 内容 from christDic where 中文词条='" & Node.Text & "'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Do While Not objRS.EOF
'MsgBox TypeName(objRS("内容"))
Text1.Text = objRS("内容")
objRS.MoveNext
Loop
Set objRS = Nothing
。
拉丁文点这里www.bigyi.net/christ.zip中的表christDic.另外在treeview控件,combox控件中也都存在同样的问题。我在金山词霸上试着输入一个拉丁文,结果是不行的。但在所有微软的记事本,写字版上却都可显示。后来我又改用richbox,但也不行。请问这种问题如何解决。
解决方案 »
- 团拜暨VB版新年第一帖
- 超难问题:用FAXCOM实现了本机发传真,如何使别的没有FAX MODEM 的机器也能通过我的本机发传真?急(有程序)
- 如何把把显示在picturebox中的图片,或通过API创建的DIB位图,保存到一个二进制数组! (在线等马上结贴)
- 屏幕取色函数
- MSFlexGrid1中怎样去合并
- 请教微软专家:一个有关DataReport的棘手问题
- LiuSam在吗?请直接和我联系。帮我解决问题。多谢了。
- 高分求救!如何向数据库中存入图片!
- vb为什么不能对标题栏进行单击响应
- 如何等间隔读取两个rs485的传感器数据?
- 如何查找API常量????
- 复选框、单选框中Ricture属性怎么用不来呀,在窗体、图片框、图像框中Ricture属性很好用。可是单选框和复选框中这个属性是怎么回事
数据库里是unicode字符集啊,问题是遇到了拉丁文就不能正常显示了。
我想微软能解决,应该是有办法的啊。
我用过的StrConv(objrs("内容"),vbunicode),越用越乱。
听不太懂,能不能说详细点。
我在word,记事本、写字板里都能显示拉丁文的。这说明相应字库已经安装了,我是这样理解的。
我刚试了一下把数据库里这些字符拷贝到RICHTEXTBOX控件里,不能正常显示。
“在VB中的转换时用的字符集”这个能设定吗?我要的是正常显示,总不见得不能实现吧!以前我要把数据导入到数据库也碰到过类似的问题,后来也解决了。
'***********************************
'Sub/Function: 返回索引结果
'
'Arguments: pstrSearch
'
'return:索引结果
'
'Re:
'
'Programmer:zhangyi
'
'History:created 9/3/2002
'
'Copyright 2002,zhangyi
'***********************************
Function funcInsertChrist(pdblNumber, strFile)
Dim strFile As String
Dim objFileSystemObject As New FileSystemObject
Dim objTextStream As TextStream
Dim strLine As String
Dim strALLHTML As String
Dim intcount As Integer
Dim intStartPosition As Integer
Dim intEndPosition As Integer
Dim strSmallTitle As String
Dim intLen As Integer
Dim objRS As New ADODB.Recordset
Dim objConn As New ADODB.Connection
Dim strSQL As String
Dim strA As String
Dim strB As String
Dim strEnglishName As String
Dim strYear As String
'使用 CreateObject 方法创建 FileSystemObject 对象 objFileSystemObject
Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
'校验函数所在位置
'数据库连接
objConn.Open gstrConn
'判断该文件是否存在
If objFileSystemObject.FileExists(strFile) = True Then
'打开文件
Set objTextStream = objFileSystemObject.OpenTextFile(strFile, ForReading, False, TristateUseDefault)
Else
'产生一个文件名不存在的错误
Err.Raise vbObjectError + 1001, "错误", "基督教大辞典没有被发现"
End If
pdblNumber = pdblNumber - 0.01 '判别是否文件结尾
Do While objTextStream.AtEndOfStream <> True
'读取文件的每一行
strLine = objTextStream.ReadLine
strSmallTitle = ""
strEnglishName = ""
strYear = ""
If InStr(1, strLine, "☆") > 0 Then
pdblNumber = pdblNumber + 0.01
pdblNumber = Format(pdblNumber, "0.00")
pdblNumber = pdblNumber + 0.00001
ElseIf InStr(1, strLine, "【") > 0 Then
intStartPosition = InStr(1, strLine, "【")
intEndPosition = InStr(1, strLine, "】")
intLen = intEndPosition - intStartPosition - 1
strSmallTitle = Mid(strLine, intStartPosition + 1, intLen)
strA = Trim(Mid(strLine, intEndPosition + 1, Len(strLine) - intEndPosition))
'strSmallTitle = Replace(strSmallTitle, "'", "''")
If Mid(strA, 1, 1) = "(" Or Mid(strA, 1, 1) = "(" Then
strB = Mid(strA, 1, 1)
If strB = "(" Then
strB = ")"
Else
strB = ")"
End If
intEndPosition = InStr(1, strA, strB)
intLen = intEndPosition - 2
strEnglishName = Mid(strA, 2, intLen)
strEnglishName = Replace(strEnglishName, "'", "''")
End If
strA = Trim(Mid(strA, intEndPosition + 1, Len(strLine) - intEndPosition))
If Mid(strA, 1, 1) = "(" Or Mid(strA, 1, 1) = "(" Then
strB = Mid(strA, 1, 1)
If strB = "(" Then
strB = ")"
Else
strB = ")"
End If
intEndPosition = InStr(1, strA, strB)
intLen = intEndPosition - 2
strYear = Mid(strA, 2, intLen)
strYear = Replace(strYear, "'", "''")
End If
' 创建记录集对象。
objRS.Open "christDic", objConn, adOpenStatic, adLockOptimistic, adCmdTable
strSmallTitle = Trim(strSmallTitle)
strLine = Trim(strLine)
'strLine = Replace(strLine, "'", "''")
objRS.AddNew
objRS("分类编目") = Trim(Format(pdblNumber, "0.00000"))
objRS("中文词条") = strSmallTitle
objRS("英文词条") = strEnglishName
objRS("年份") = strYear
objRS("内容") = strLine
objRS.Update
pdblNumber = pdblNumber + 0.00001
Set objRS = Nothing Else
objRS.Open "christDic", objConn, adOpenStatic, adLockOptimistic, adCmdTable
objRS.MoveLast
objRS.Update "内容", objRS("内容") & vbCrLf & strLine
Set objRS = Nothing
End If
Loop
objRS.Open "insert into christIndex(selfIndex,content,belongIndex) select 分类编目,中文词条,mid(分类编目,1,4) from christDic where 分类编目 like '" & Mid(pdblNumber, 1, 2) & "%'", objConn, adOpenStatic, adLockOptimistic, adCmdText
Set objRS = Nothing
'释放对象
objTextStream.Close
Set objTextStream = Nothing
Set objFileSystemObject = NothingEnd Function
我刚试了一下把数据库里这些字符拷贝到RICHTEXTBOX控件里,不能正常显示。===================================================================
你从数据库里先拷到WORD里,再从WORD里拷到RICHTEXTBOX控件里,就能正常显示,不知道是数据库拷贝的时候不能带正确的格式,还是从WORD里拷出来的时候带了正确的格式.搞不明白~~
是用ADO啊!
Dim objRS As New ADODB.Recordset
Dim objConn As New ADODB.Connection
我用ADO将特殊符号输出到文本文件是可以的。
但是在用richbox读取文本文件就出了问题
(本来也行,一样的代码,现在则么调都是乱码了,好奇怪)
Private Sub Form_Load()
Dim objFileSystemObject As New FileSystemObject
Dim objTextStream As TextStream
Dim strFile As String
strFile = App.Path & "\try.txt"
Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
If objFileSystemObject.FileExists(strFile) = True Then
'打开文件
Set objTextStream = objFileSystemObject.OpenTextFile(strFile, ForReading, False, TristateUseDefault)
Else
'产生一个文件名不存在的错误
Err.Raise vbObjectError + 1001, "错误", "基督教大辞典没有被发现"
End If
'判别是否文件结尾
Do While objTextStream.AtEndOfStream <> True
'读取文件的每一行
rtfWord.TextRTF = objTextStream.ReadLine
Loop
'释放对象
objTextStream.Close
Set objTextStream = Nothing
Set objFileSystemObject = Nothing
End Sub
richbox能读入UTF-8的字符串,但在读unicode字符串时有问题。
而access2000中的字符串是unicode编码的。所以就出现了乱码。 就是上边一个程序,我把文本文件设成unicode字符集richbox不能正确读入。而设成UTF—8就可正确读入了。
现在的问题是
1。怎样将 unicode字符串转换成UTF-8字符串
2。textbox可用richbox控件替换,但combox和treeview怎么办啊