首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA特殊字符U+2264和U+2265

VBA特殊字符U+2264和U+2265
EN

Stack Overflow用户
提问于 2014-07-03 09:17:26
回答 2查看 4.3K关注 0票数 1

我有个令人沮丧的问题。我有一个字符串,它包含这个列表中没有的其他字符(check链接)。我的字符串表示一个SQL查询。

这是我的字符串可以包含的一个例子:INSERT INTO test (description) VALUES ('≤ ≥ >= <=')

当我检查数据库时,行插入成功,但是"≤“和"≥”字符被替换为"=“字符。在数据库中,description列中的字符串类似于"= = >= <=“。

对于大多数字符,我可以得到一个字符代码。我在谷歌上搜索了这两个符号的字符代码,但没有找到一个。我的目标是检查我的字符串是否包含这两个字符,然后用">=“和"<=”替换它们。

===Later Edit===

我试图检查每个字符在一个for循环;

tmp =中间$(str,i,1)

当我的for循环到达"≤“字符时,tmp的值将为"=”,因此Excel无法在VB字符串中读取这个"≤“字符,然后当我检查字符代码时,会得到"=”的代码(Chr(61))。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-03 13:55:43

您能知道数据库字符集中"≤“和"≥”的字符代码是什么吗?如果是,那么可以尝试用chrw(character_code)替换查询字符串中的两个字符。

我刚刚测试了一些类似于使用Excel作为我的数据库所做的事情--它看起来很好。

编辑:假设你仍然被困在这里寻找帮助-你能确认你正在使用的数据库,以及你想要插入字符串的“描述”字段的任何类型信息设置吗?

Edit2:我不熟悉server,但是您的“描述”字段是否设置为某种数据类型?如果是这样的话,它是什么,它支持unicode字符吗?ncharvar,nchar似乎是支持Unicode的sql server数据类型的示例。

听起来您可能还想尝试在查询字符串中的值中添加一个"N“前缀-请参阅我是否在unicode的"insert into“语句中使用前缀N? & 如何从查询窗口向Server插入unicode文本

Edit3: varchar不符合正确呈现Unicode的条件--参见这里的varchar和nvarchar有什么区别?。你能换到nvarchar吗?如上文所述,您还可能希望在查询字符串中的值前加上'N‘,以确保完全生效。

Edit4:关于sqlserver,我不能说得更多,但是您现在看到的是VBA是如何显示字符的,而不是它在内存中的实际存储方式--这才是底线。VBA不能正确显示"≤“,因为它不支持Unicode字符集。但是,它可以--而且确实--正确地存储二进制表示。

要获得这方面的任何证据,只需尝试从VBA将字符粘贴回Excel中的另一个单元格,您将检索原始字符-或查看VBA中的二进制表示:

代码语言:javascript
运行
复制
Sub test()
    Dim s As String
    Dim B() As Byte

    '8804 is "≤" character in Excel character set
    s = ChrW(8804)

    'Assign memory representation of s to byte array B
    B = s

    'This loop prints "100" and "34", respectively the low and high bytes of s coding in memory
    'representing binary value 0010 0010 0110 0100 ie 8804
    For i = LBound(B) To UBound(B)
        Debug.Print B(i)
    Next i

    'This prints "=" because VBA can not render character code 8804 properly
    Debug.Print s
End Sub
票数 0
EN

Stack Overflow用户

发布于 2014-07-03 14:20:42

如果我复制您的文本INSERT INTO test (description) VALUES ('≤ ≥ >= <=')并将其粘贴到VBA编辑器中,它将变成INSERT INTO test (description) VALUES ('= = >= <=')

如果我将该文本粘贴到Excel单元格或Access表的文本字段中,它将“正确”粘贴。

这似乎是一个字符代码支持的问题,我建议您看看这个问题

但是在您的程序中,该字符串来自何处,因为它不能在VBA中键入??

编辑:我用下面的代码尝试了一下,它的工作原理就像把你的异国情调字符从工作表转移到一张桌子上一样!

代码语言:javascript
运行
复制
Sub test1()

    Dim db As Object, rs As Object, cn As Object
    Set cn = CreateObject("DAO.DBEngine.120")
    Set db = cn.OpenDatabase("P:\Database1.accdb")
    Set rs = db.OpenRecordset("table1")
    With rs
        .addnew
        .Fields(0) = Range("d5").Value
        .Update
    End With
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24549707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档