2014-12-23 2 views
0

Я хранимую большой арабский базы данных в Mysql с помощью Perl в неправильном формате, вот что случилось:Преобразование Mysql хранятся данные для исправления utf8

1) -Mysql таблицы, созданные с атрибутами:

ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci 

2) - Мои скрипты perl создаются в utf8, и я использую «use utf8;» на вершине.

3) -Я могу прочитать данные из таблицы и отобразить ее на арабском языке на html-страницах, используя метатег charset utf8.

Проблема, когда я вижу, данные в базе данных он хранится в виде кодируются не читаемым, после поиска о Perl модуля DBI, я нашел, что я должен сделать это:

$dbh->{'mysql_enable_utf8'} = 1; 
$dbh->do('SET NAMES utf8'); 

Сразу после подключения к базе данных, Я не делал.

Теперь, если я это сделаю, новые данные, хранящиеся в таблице, отображаются правильно везде, даже в приложении windows браузера mysql.

Проблема теперь с уже данными, хранящимися в таблице, кажется, что она набирает двойной код utf8 или что-то в этом роде. Как исправить уже сохраненные данные, когда указанные выше флаги не были установлены.

ответ

0

После нескольких дней поиска все равно не удалось исправить данные в mysql direct или с помощью программирования, подобного Perl.

Единственное, что я сделал, это экспортировать данные из mysql таким же образом, как я их поместил, в котором, кажется, двойной utf8, закодированный Perl, в текстовые файлы, но после того, как я utf8 сначала декодировал его в Perl.

После этого данные будут правильно сохранены в текстовые файлы в формате UTF8, которые могут быть импортированы или управляются напрямую как допустимые данные UTF8 в Perl и mysql.