1

当我尝试在 MS ACCESS 表中存储包含“C”代码的文本时(以编程方式)。它用一些问号符号替换转义序列('\n'、'\t')。

例子 :

要存储的代码:

#include<stdio.h>
int main()
{
  printf("\n\n\t Hi there...");
  return 0;
} 

当我看到上面插入代码的 MS-Access 表时,它显示每个换行符和 '\t' 字符替换为 '?' 一种符号。

我的问题是“MS-Access 文件中是否还有其他数据类型可以按原样存储代码而不用某些符号替换转义序列?” 和“像 MYSQL 这样的其他 DBMS 中是否存在‘原始’数据类型可以完成我的工作?”

这是它在 access-07 中的显示方式:

这就是它显示问号符号的方式

4

2 回答 2

0

看起来源文本中的换行符不是 Windows 标准的 CRLF(回车、换行)。找出那些神秘人物的字符代码。

使用下面的过程,我可以给它一个文本字符串,它会列出每个字符的代码。这是立即窗口中的一个示例。

AsciiValues "a" & vbcrlf & "b"
position      Asc           AscW
 1             97            97 
 2             13            13 
 3             10            10 
 4             98            98 

如果我想检查存储在表格文本字段中的值,我可以DLookup用来获取该值并将其提供给函数。

AsciiValues DLookup("memo_field", "tblFoo", "id=1")
position      Asc           AscW
 1             108           108 
 2             105           105 
 3             110           110 
 4             101           101 
 5             32            32 

一旦确定了问题字符的代码,您就可以执行一条UPDATE语句,将问题字符代码替换为合适的替代代码。

UPDATE YourTable
SET YourField = Replace(YourField, Chr(x), Chr(y));

这是程序...

Public Sub AsciiValues(ByVal pInput As String)
    Dim i As Long
    Dim lngSize As Long
    lngSize = Len(pInput)
    Debug.Print "position", "Asc", "AscW"
    For i = 1 To lngSize
        Debug.Print i, Asc(Mid(pInput, i, 1)), AscW(Mid(pInput, i, 1))
    Next
End Sub
于 2013-02-27T20:04:43.933 回答
0

我会说你可能缺少整个换行符。Access 中的换行符由回车符 (ASCII 13)换行符(ASCII 10) 组成。这缩写为 CRLF。你可能只有一个或另一个,但不是两者都有。

使用 HansUp 的 AsciiValues 程序来看看。

于 2013-02-28T02:15:18.453 回答