gpt4 book ai didi

c++ - Unicode 麻烦了! Ms-Access 97 迁移到 Ms-Access 2007

转载 作者:可可西里 更新时间:2023-11-01 10:09:37 26 4
gpt4 key购买 nike

问题分为两步:

问题步骤 1。访问包含以 UTF-8 编码的 XML 字符串的 97 数据库

问题归结为:Access 97 数据库包含以 UTF-8 编码的 XML 字符串。所以我创建了一个补丁工具,用于将 XML 字符串从 UTF-8 单独转换为 Unicode。为了将 UTF8 字符串转换为 Unicode,我使用了函数MultiByteToWideChar(CP_UTF8, 0, PChar(OriginalName), -1, @newName, Size);.(其中 newName 是声明为“newName : Array[0..2048] of WideChar ;").

此功能在大多数情况下都适用,我已经用 Spainsh、Arabic 和字符对其进行了检查。但我正在研究希腊语和中文字符,这令人窒息。

对于某些希腊字符,例如“αÏ…γ. εαÏααβε1ε”(存储在 Access-97 中),生成的新字符串之间包含空字符,并且当它存储为宽字符串,字符被剪裁。

对于某些中文字符,如“?¢»?µ?”(存储在 Access-97 中),结果是完全荒谬的,如“?¢»?µ?”。

问题第 2 步。访问 97 db 文本字符串,应用程序 GUI 采用 unicode 输入并保存在 Access-97 中

首先我检查了阿拉伯语和西类牙文字符,似乎不需要明确的字符编码。但问题又出现在希腊字和中文字上。

我尝试了上面提到的相同的文本转换功能(是否正确???),结果再次令人失望。无需转换即可使用的 Spainsh 字符会导致 unicode 字符丢失或转换为常规 Ascii 字母。

希腊语和中文字符表现出与步骤 1 中提到的相似的行为。

请指导我。我采取的方法正确吗?还有别的办法吗???好吧,现在我很困惑,充满了问题:)

最佳答案

使用希腊字符没有特殊要求。真正的问题是字符存储在 Access 最初无法识别的编码中。当应用程序将 UTF8 值存储在数据库中时,它会尝试将每个字节转换为数据库代码页中的等效字节。每个在该编码中没有对应关系的字符都被替换为?这可能意味着希腊文本是可以的,而中文文本可能已经消失了。

为了将数据转换为可读的内容,您必须知道存储它们的代码页。使用它您可以获得实际的字节,然后将它们转换为 Unicode。

关于c++ - Unicode 麻烦了! Ms-Access 97 迁移到 Ms-Access 2007,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com