2009-10-07 8 views
0

Nous avons un fichier MS Access .mdb produit, je pense, par une base de données Access 2000. Je suis en train d'exporter une table SQL avec mdbtools, en utilisant cette commande:Migration de données MS Access vers MySQL: problèmes de codage de caractères

mdb-export -S -X \\ -I orig.mdb Reviewer > Reviewer.sql 

qui produit le fichier que je pense, sauf une chose: Certains des personnages sont représentés comme des points d'interrogation. Ceci: "Il n'était pas prêt" apparaît comme ceci: "Il n'était pas prêt", seulement dans certains cas (principalement des guillemets simples/doubles), où peut-être le contenu a été collé dans la DB de MS Word. Sinon, les données sont superbes.

J'ai essayé différentes valeurs pour "export MDB_ICONV =". J'ai essayé d'utiliser iconv sur le fichier résultant, avec ISO-8859-1 dans le/de, avec UTF-8 dans le/de, avec WINDOWS-1250 et WINDOWS-1252 et WINDOWS-1256 dans le de, dans diverses combinaisons. Mais je n'ai pas réussi à récupérer ces citations frisées. Franchement, basé sur la façon dont le fichier résultant ressemble, je suspecte que le problème soit dans le fichier .mdb d'origine, ou dans mdbtools. Les caractères mal formés sont tous des points d'interrogation simples, mais il est clair qu'ils ne sont pas des versions malformées de la même chose; donc (mon instinct dit) il n'y a pas assez de données dans le fichier résultant; donc (mon instinct dit) le problème ne peut pas être réparé dans le fichier résultant.

Quelqu'un at-il déjà rencontré celui-ci? Des conseils pour aller de l'avant? FWIW, je n'ai pas et je n'ai jamais eu MS Access - le fichier provient d'une tierce partie - donc cela pourrait être aussi simple que de changer quelque chose sur la base de données, et je serais très heureux de l'entendre.

Merci.

Répondre

2

On dirait que "citations intelligentes" ont réclamé encore une autre victime. MS Word prend des guillemets ascii simples et les traduit en caractères de guillemets doubles et de guillemets droits à double octet et traduit une seule citation en caractère apostrophe double octet. Les caractères à deux octets en question sont associés à une page de codes MS qui peut être grossièrement compatible avec unicode-16, à l'exception des caractères de citation idiots.

Il existe un script perl appelé 'demoroniser.pl' qui annule tout ce malarky et convertit les guillemets en ASCII.

+0

Merci d'avoir répondu! Je suis content de connaître le démoralisateur (et son cousin, l'unmoroniser). Autour de ce que je peux dire, ces outils traitent des entités HTML ("J'ai écrit un programme Perl, le démoralisateur, pour transformer le" junk HTML "de Microsoft en un point de départ pour quelque chose que je considère présentable sur mon site). . Mais dans les données que je regarde (en vi), les caractères mal formés ne sont pas du HTML; ce sont des points d'interrogation. En tout état de cause, le démoralisateur en fonctionnement n'a fait aucune amélioration. Je pense que je dois lancer quelque chose comme démoralisateur contre les personnages eux-mêmes. Cela a-t-il du sens? – hoosteeno

+0

Démoralisateur conatins la logique de base pour se débarrasser d'eux. (Si en effet c'est le problème!). Jetez un coup d'œil aux transalations que fait le programme Perl. Puis "od -x" votre fichier pour voir si ce sont les caractères que vous avez affaire. –

0

Cela est probablement dû au fait que les données dans le fichier Access sont UTF et que MDB Tools essaie de les convertir en ascii/latin/is0-8859-1 ou un autre encodage. Étant donné que ces encodages ne mappent pas tous les caractères UTF correctement, vous vous retrouvez avec des points d'interrogation. Le information here peut vous aider à résoudre vos problèmes d'encodage en demandant à MDB Tools d'utiliser le codage correct.

+0

Merci! J'avais vu cette page, mais tu m'as rappelé d'essayer à nouveau.J'ai écrit un script pour mettre le jeu de caractères de mdbtools à toutes les valeurs possibles dans 'iconv -l', lancer mdbtools, et vérifier l'exactitude d'une phrase spécifique dans le résultat. Malheureusement, aucun charset n'a modifié la sortie de mdbtools. – hoosteeno

Questions connexes