gpt4 book ai didi

vba - 外来字符显示为?????在 VBA 2003 中,如何设置 UTF-8?

转载 作者:行者123 更新时间:2023-12-04 05:02:53 30 4
gpt4 key购买 nike

我在 Access 2003 中有一个需要使用外语字符的数据库。字符在表格中显示得很好。但是,当 VBA 尝试读取它们时,它无法做到。

例如,cf_Answer 中的 ANSWER_TEXT 列显示:佛吉尼亚海滩

但是 VBA 中的 select 语句:

sqlstmt = "SELECT ANSWER_TEXT AS ans_text FROM cf_Answer"
Set rst_a = dbs.OpenRecordset(sqlstmt, dbOpenSnapshot)
rst_a![ans_text]返回 ?????? .

我知道这与 UTF-8 编码有关,但我找不到设置它的方法。有没有办法在表格中设置它?目前,ANSWER_TEXT 的数据类型为 memo .或者也许有一种方法可以设置 VBA 来理解这些字符?

谁能至少指出我正确的方向?

最佳答案

问题可能是由于您显示该 unicode 文本的位置。

我将这些相同的字符粘贴到表中的文本字段中。使用 DLookup 检索它们在即时窗口中会导致它们显示为问号,因为即时窗口不会按照您的意愿显示 unicode。

? DLookup("some_text", "tblFoo", "id = 1")
??????

一个 MsgBox也将它们显示为问号。

MsgBox DLookup("some_text", "tblFoo", "id = 1")

但是,表单文本框控件确实具有正确处理 unicode 的能力。将文本框绑定(bind)到包含这些字符的字段给了我这个......

Text Box with Unicode characters

查询也可以引用 unicode 字符,这在其 WHERE 中使用一个。子句并在数据 TableView 中打开查询时正确显示它们。

SELECT f.id, f.some_text
FROM tblFoo AS f
WHERE (((f.some_text) Like '佛*'));

我怀疑这一切都归结为您尝试使用这些 un​​icode 字符的方式以及显示它们的位置。

在评论中,您说将这些 un​​icode 字符写入文本文件只会产生问号。但是,如果您将 unicode 写入文本文件(如下面的过程)并在能够正确处理 unicode 的编辑器中显示该文件,您将看到在存储它们的表的数据 TableView 中看到的相同字符.此屏幕截图显示使用从下面的代码创建的文件打开的写字板。

WordPad displaying Unicode text

Dim objFso As Scripting.FileSystemObject
Dim objFile As Scripting.TextStream

Set objFso = New Scripting.FileSystemObject
Set objFile = objFso.OpenTextFile(CurrentProject.Path & _
Chr(92) & "unicode.txt", ForWriting, True, TristateTrue)
objFile.Write DLookup("some_text", "tblFoo", "id = 1")
objFile.Close
Set objFile = Nothing
Set objFso = Nothing

关于vba - 外来字符显示为?????在 VBA 2003 中,如何设置 UTF-8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910166/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com