2009-10-07 10 views
0

У нас есть файл MS Access .mdb, созданный, я думаю, базой данных Access 2000. Я пытаюсь экспортировать таблицу в SQL с mdbtools, используя следующую команду:Перенос данных MS Access в MySQL: проблемы с кодировкой символов

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

Это производит файл я ожидаю, за исключением одной вещи: Некоторые персонажи представлены в виде вопросительных знаков. Это: «Он не был готов» проявляется так: «Он не был готов», только в некоторых случаях (в основном одиночные/двойные фигурные кавычки), где, возможно, содержимое было вставлено в БД из MS Word. В противном случае данные выглядят великолепно.

Я пробовал различные значения для «export MDB_ICONV =». Я попытался использовать iconv в результирующем файле с ISO-8859-1 в диапазоне от/до, с UTF-8 в/из, с WINDOWS-1250 и WINDOWS-1252 и WINDOWS-1256 в различные комбинации. Но мне не удалось вернуть эти фигурные цитаты.

Откровенно говоря, в зависимости от того, как выглядит результирующий файл, я подозреваю, что проблема находится либо в исходном файле .mdb, либо в mdbtools. Ошибочные символы - это единственные вопросительные знаки, но ясно, что они не являются неверными версиями одной и той же вещи; так что (мой кишок говорит), в результирующем файле недостаточно данных; поэтому (мой кишок говорит) проблема не может быть исправлена ​​в результирующем файле.

Кто-нибудь сталкивался с этим раньше? Любые подсказки для продвижения вперед? FWIW, у меня нет и никогда не было MS Access - файл поступает от третьего лица, поэтому это может быть так же просто, как изменить что-то в базе данных, и я был бы очень рад это услышать.

Спасибо.

ответ

2

Похоже, что «умные цитаты» заявили еще одну жертву.

Слово MS принимает простые цитаты ascii и преобразует их в двухбайтовые символы с левой и правой кавычками и преобразует одну кавычку в символ двойного байтового апострофа. Двумя байтовыми символами, о которых идет речь, можно отнестись к кодовой странице MS, которая примерно совместима с unicode-16, за исключением глупых символов цитат.

Существует скрипт perl под названием «demoroniser.pl», который отменяет все это malarky и преобразует кавычки обратно в обычный ASCII.

+0

Спасибо, что ответили! Я рад узнать о деморонизе (и его двоюродном брате, неморонисте). Рядом, как я могу судить, эти инструменты имеют дело с объектами HTML («Я написал программу Perl, деморонизатор, чтобы преобразовать« нежелательный HTML-код »Microsoft, по крайней мере, в качестве отправной точки для чего-то, что я считаю презентабельным на моем сайте») , Но в данных, которые я просматриваю (в vi), искаженные символы не являются HTML; это вопросительные знаки. В любом случае работающий деморонист не улучшался. Думаю, мне нужно запустить что-то вроде деморозера против самих персонажей. Имеет ли это смысл? – hoosteeno

+0

Деморонизатор кодирует основную логику, чтобы избавиться от них. (Если это действительно проблема!). Посмотрите на трансаляции, выполняемые программой perl. Затем «od -x» ваш файл, чтобы увидеть, если это те символы, с которыми вы имеете дело. –

0

Это, скорее всего, связано с тем, что данные в файле доступа являются UTF, а MDB Tools пытается преобразовать его в ascii/latin/is0-8859-1 или какую-либо другую кодировку. Поскольку эти кодировки не отображают все символы UTF должным образом, вы получаете вопросительные знаки. information here может помочь вам исправить проблемы с кодировкой, заставив MDB Tools использовать правильную кодировку.

+0

Спасибо! Я видел эту страницу, но ты напомнил мне, чтобы я попытался снова.Я написал сценарий, чтобы установить charset mdbtools для каждого возможного значения в 'iconv -l', запустить mdbtools и проверить определенную фразу в результате для правильности. К сожалению, никакая кодировка не изменила вывод mdbtools. – hoosteeno