作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在使用 ADODB.RecordSet(MS ActiveX 数据对象 2.8 库)在 Excel 电子表格上显示来自 Clob 字段 (Oracle) 的西里尔字母时遇到问题。
例如,我创建了一个包含一个 Clob 字段的表。我只插入了一行西里尔字母,并试图在 Excel 电子表格上显示该值。但是,文本显示为 ????在 Msgbox 和单元格中。这仅在从 Clob 字段中获取值时发生。如果我们从 varchar 查询它们,它工作正常。我已经尝试过 11.2.0.2.0 和 12.2.0.1.0。行为是相同的。我们能做些什么来解决这个问题?
db 中的 NLS_CHARACTERSET 是 AL32UTF8。
VBA代码如下:
Private Sub UnloadReportBtn_Click()
Dim RecordSet As ADODB.RecordSet
Set RecordSet = getTestClob
While RecordSet.EOF = False
MsgBox RecordSet.Fields("TEST1")
Cells(7, 7) = RecordSet.Fields("TEST1")
RecordSet.MoveNext
Wend
End Sub
Public Function getTestClob()
Dim Query As String
Query = "SELECT TEST1 FROM TEST_CLOB"
Set getTestClob = getRecordSet(Query)
End Function
Public Function getRecordSet(Query As String) As ADODB.RecordSet
Dim SQLCommand As ADODB.Command
Dim RecordSet As ADODB.RecordSet
Set SQLCommand = New ADODB.Command
Set SQLCommand.ActiveConnection = Connection
SQLCommand.CommandText = Query
SQLCommand.CommandType = adCmdText
SQLCommand.CommandTimeout = 0
Set getRecordSet = SQLCommand.execute
End Function
最佳答案
设置您的NLS_LANG
支持西里尔字符的字符集的值,例如CL8MSWIN1251
或 AL32UTF8
.
您可以通过环境变量执行此操作,例如
SET NLS_LANG=AMERICAN_RUSSIA.CL8MSWIN1251
HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
(对于 32 位),分别。
HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\NLS_LANG
对于 64 位。
关于vba - 西里尔字母在 Oracle 的 VBA 中显示为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51740281/
我在数据库中有一个具有俄罗斯值(value)观的项目。我需要做的就是附和他们,但事实证明这比预期的要困难。所有俄语字符都只是作为问号打印。 IE: ??? ? ????????对于我尝试过的每种编码,
这是我解析 JSON 的函数: func jsonParsingWeather(urlPath:String) -> NSDictionary { var utf8URLPath = urlP
我是一名优秀的程序员,十分优秀!