我继承了一个巨大的,庞大的MS Access数据库,并被分配来解决其中的问题。问题如下......
系统A将其数据导出到管道分隔的.txt文件。这些文件具有正常的特殊字符,例如在记事本或Excel中打开此文件时显示的值“Müller”。
接下来,Access DB导入.txt文件并将结果存储在内部employees表中。姓氏字段的数据类型为“备忘录”。将.txt文件中的数据导入MS Access的方法如下:
Call DoCmd.TransferText(acImportDelim, _
"tblEmployees", _
"tblEmployees", _
me.txtImportFile, _
True)
运行此导入并查看employees表后,我注意到带有特殊字符的名称被搞砸了。例如,“Müller”成为“M├⌐ller”。我调查了一些在线帮助,发现在TransferText调用中可以包含一个“codepage”参数,所以我把它设置为65001(这显然是unicode的代码页):
Call DoCmd.TransferText(acImportDelim, _
"tblEmployees", _
"tblEmployees", _
me.txtImportFile, _
True, _
, _
65001)
既然我已经再次运行了导入脚本,我认为没有任何区别,特殊字符仍然是错误的。我已经没事了,所以我希望你们中的一位对如何解决这个问题有一些建议...
答案 0 :(得分:2)
TransferText操作的两个版本都使用名为tblEmployees的SpecificationName。该规范中指定了什么代码页?
尝试手动导入文本文件。从“导入文本向导”中选择“高级”。然后在代码页列表框中选择Unicode。您可能需要使用不同的代码页选项进行测试,直到找到正确导入文本的选项。
哪个代码页选择有效,将您的选择保存为规范并在TransferText命令中使用它,而不提供单独的CodePage参数。
答案 1 :(得分:1)
使用CodePage = 1200(msoEncodingUnicodeLittleEndian)解决了我的问题。
答案 2 :(得分:0)
在VBA中有一个unicode列表:
http://msdn.microsoft.com/en-us/library/office/aa432511(v=office.12).aspx