problème est classé en deux étapes:Unicode Malheur! Ms-Access 97 migration vers Ms-Access 2007
problème Étape 1. Access 97 db contenant des chaînes XML qui sont codés en UTF-8. Le problème se résume à ceci: la base de données Access 97 contient des chaînes XML codées en UTF-8. J'ai donc créé un outil de patch pour une conversion séparée pour les chaînes XML de UTF-8 à Unicode. Afin de convertir la chaîne UTF8 en Unicode, j'ai utilisé la fonction MultiByteToWideChar (CP_UTF8, 0, PChar (Nom d'origine), -1, @nouveau, Taille); (où newName est un tableau tel que déclaré "nouveauName: tableau [0..2048] de WideChar;").
Cette fonction fonctionne bien dans la plupart des cas, je l'ai vérifié avec les caractères Spainsh, Arabe. mais je travaille sur les caractères grecs et chinoisese ça étouffe.
Pour certains caractères grecs comme « I • ... Ï i³. Isi ± ± ïI βιά » (telle qu'elle est stockée dans Access-97), la nouvelle chaîne résultante contient charaters nul entre les deux, et quand il est stocké à chaîne large, les caractères sont tronqués.
Pour certains caractères chinois comme "? Â ¢ Â? Âμ?" (comme stocké dans Access-97), le résultat est totalement absurde comme "? ¢"? Μ? ".
problème Étape 2. Access 97 db chaînes de texte, GUI application prend entrée unicode et enregistré dans Access-97
D'abord, je vérifié avec l'arabe et Spainish caractères, il semble donc que pas de caractères explicites codage est requis . Mais encore une fois le problème vient avec les caractères grecs et chinois.
J'ai essayé la même fonction mentionnée ci-dessus pour la conversion de texte (Est-ce correct ???), le résultat était à nouveau dissidence. Les caractères de Spainsh qui sont ok avec la conversion dehors, obtiennent le caractère d'Unicode soit perdu ou converti en Alphabets ascii réguliers.
Les caractères grecs et Chineese montre un comportement similaire à celui mentined à l'étape 1.
S'il vous plaît me guider. Est-ce que je prends la bonne approche? Y at-il un autre moyen de contourner ??? Eh bien maintenant je suis confus et plein de questions :)
Quelle version de Delphi? Depuis Delphi 2009, la prise en charge d'Unicode a beaucoup changé. – mjn
Son Delphi 2006 – Nains
Il n'y a aucun moyen de 'convertir de UTF-8 en Unicode', Unicode n'est aucun encodage de caractères :) Pour convertir en Access 2007 vous devez savoir quel codage de charcter utilise pour les tables de base de données, par exemple UTF -16 (ce qui n'est pas la même chose que WideChar) – mjn