耍酷的柳树 · c++正则表达式过滤特殊字符(非字母,数字, ...· 2 周前 · |
温文尔雅的绿茶 · Python-docx ...· 6 月前 · |
儒雅的绿茶 · python轻量级orm框架 ...· 1 年前 · |
安静的花卷 · docker中遇到unauthorized ...· 1 年前 · |
帅呆的汉堡包 · JAVA,为什么我不能引用gson包?_百度知道· 1 年前 · |
我有个令人沮丧的问题。我有一个字符串,它包含这个 列表 中没有的其他字符(check链接)。我的字符串表示一个SQL查询。
这是我的字符串可以包含的一个例子:
INSERT INTO test (description) VALUES ('≤ ≥ >= <=')
当我检查数据库时,行插入成功,但是"≤“和"≥”字符被替换为"=“字符。在数据库中,description列中的字符串类似于"= = >= <=“。
对于大多数字符,我可以得到一个字符代码。我在谷歌上搜索了这两个符号的字符代码,但没有找到一个。我的目标是检查我的字符串是否包含这两个字符,然后用">=“和"<=”替换它们。
===Later Edit===
我试图检查每个字符在一个for循环;
tmp =中间$(str,i,1)
当我的for循环到达"≤“字符时,tmp的值将为"=”,因此Excel无法在VB字符串中读取这个"≤“字符,然后当我检查字符代码时,会得到"=”的代码(Chr(61))。
发布于 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中的二进制表示:
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
发布于 2014-07-03 14:20:42
如果我复制您的文本
INSERT INTO test (description) VALUES ('≤ ≥ >= <=')
并将其粘贴到VBA编辑器中,它将变成
INSERT INTO test (description) VALUES ('= = >= <=')
。
如果我将该文本粘贴到Excel单元格或Access表的文本字段中,它将“正确”粘贴。
这似乎是一个字符代码支持的问题,我建议您看看 这个问题 。
但是在您的程序中,该字符串来自何处,因为它不能在VBA中键入??
编辑:我用下面的代码尝试了一下,它的工作原理就像把你的异国情调字符从工作表转移到一张桌子上一样!
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")
帅呆的汉堡包 · JAVA,为什么我不能引用gson包?_百度知道 1 年前 |