问题是在两个步骤中进行分类:Unicode的祸! MS-Access 97中迁移到MS-Access 2007年
问题步骤1. 访问97含有分贝XML被以UTF-8编码的字符串。
的问题归结为:在Access 97中数据块包含了在UTF-8编码的XML字符串。所以我创建了一个补丁工具,用于将XML字符串从UTF-8转换为Unicode。为了隐蔽UTF8字符串为Unicode,我已经使用功能 的MultiByteToWideChar(CP_UTF8,0,PChar类型(ORIGINALNAME),-1,@newname,大小);。(其中newName是声明的数组“newName:WideChar的数组[0..2048];”)。在大多数情况下,我与Spainsh,阿拉伯语,字符核对它
此功能良好。但我正在研究希腊文和中文字符,这令人窒息。
对于一些希腊字符,如“我•我......γ。ISI±二±Î²Î¹Î¬”(存储在访问-97),所得到的新的字符串包含空charaters之间,当它被存储到宽字符的字符越来越剪裁。
对于像“????μ?”这样的一些中文字符(存储在Access-97中的),结果是完全荒谬的,就像“????μ?”。
问题步骤2:访问97分贝文本字符串,应用程序界面采用Unicode输入并保存在Access-97
首先,我用阿拉伯语和Spainish字符核对,似乎那么该编码不需要明确的字符。但是问题又来自希腊和中国的人物。
我想文本转换上述相同的功能(对不对???),结果再次disspointing。 Spainsh字符与out转换正常,得到unicode字符丢失或转换为常规Ascii字母。
希腊,葡萄牙语和字符显示为mentined在步骤1中
请指引我类似的行为。我采取了正确的方法吗?有没有其他的方法? 那么现在我很迷茫,充满问题:)
哪个Delphi版本?从Delphi 2009开始,对Unicode的支持发生了很大变化。 – mjn 2010-07-06 13:36:29
它的Delphi 2006 – Nains 2010-07-06 14:05:06
没有办法将'从UTF-8转换为Unicode',Unicode不是字符编码:)要转换为Access 2007,您需要知道它用于给定数据库表的哪个字符编码,例如UTF -16(与WideChar不同) – mjn 2010-07-06 15:55:51