外国字符显示为?????在VBA2003中,如何设置UTF-8?

外国字符显示为?????在VBA2003中,如何设置UTF-8?,vba,ms-access,utf-8,ms-access-2003,non-unicode,Vba,Ms Access,Utf 8,Ms Access 2003,Non Unicode,我有一个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\u a![ans_text]

我有一个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\u a![ans_text]
返回

我知道这与UTF-8编码有关,但我找不到设置它的方法。有没有办法把它摆在桌子上?目前,答案文本的数据类型为
memo
。或者也许有一种方法可以设置VBA来理解这些字符


至少有人能给我指出正确的方向吗?

问题可能是由于您在哪里显示unicode文本

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

?DLookup(“某些文本”、“tblFoo”、“id=1”)
??????
MsgBox
也将它们显示为问号

MsgBox DLookup(“一些文本”、“tblFoo”、“id=1”)
但是,表单文本框控件确实能够正确处理unicode。将文本框绑定到包含这些字符的字段会使我看到

查询还可以引用unicode字符,这将在其
WHERE
子句中使用unicode字符,并在数据表视图中打开查询时正确显示所有字符

选择f.id,f.some\u文本
从tblFoo到f
其中((f.some_text)Like'佛*'));
我怀疑这一切都归结于您如何使用这些unicode字符以及在何处显示它们

在一篇评论中,您指出将这些unicode字符写入文本文件只会产生问号。但是,如果将unicode写入文本文件(如下所述)并在能够正确处理unicode的编辑器中显示该文件,您将看到与存储它们的表的数据表视图中相同的字符。此屏幕截图显示了使用以下代码创建的文件打开的写字板

Dim objFso作为Scripting.FileSystemObject
Dim objFile As Scripting.TextStream
Set objFso=New Scripting.FileSystemObject
设置objFile=objFso.OpenTextFile(CurrentProject.Path&_
Chr(92)和“unicode.txt”,用于书写,True,TristateTrue)
写DLookup(“一些文本”,“tblFoo”,“id=1”)
objFile.Close
设置objFile=Nothing
设置objFso=Nothing

我不明白您所说的“调用”它是什么意思。如果我在即时窗口或消息框中显示它,它将显示为问号。如果我在支持unicode的内容(文本框或数据表视图)中显示它,它将显示为unicode。如果我在此处过于密集,请原谅:-(啊,我想我应该多解释一下我的意思。当我说‘调用’时,我的意思是我想把它存储在一个变量中,然后我所写的代码将构建一些coldfusion页面,这些页面需要显示文本。也许有一种方法可以将字符转换成它可以读取的内容?我不知道coldfusion。我预先假设您使用Access db的查询为其提供数据(对吗?)。如果是,则查询结果集包含unicode文本作为unicode字符字符串(与“数据表”视图中显示的我的查询相同)。那么问题是如何让Coldfusion正确显示它们。我对此一无所知。无论如何,Coldfusion不是问题所在。它在生成txt文件时也会遇到同样的问题,只是写行。例如:
something.writeline“foreign chars:&rst![f.some_text]
将在该txt文件中显示为
外来字符:??
。编辑:是的,coldfusion也可以读取,但我无法获取VB(使用监视窗口进行调试)要显示除
之外的任何内容,
DLookup
是否比编写
SELECT
语句更好地处理这些内容?另外,请记住它是VB和Access的旧版本