Как превратить искаженные данные в utf8? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть база данных, заполненная данными, похожими на эти Î‘Î½Ï „ικΠ± Ï„ Î ± βοΠ»Î, и мне нужно найти способ преобразовать все это в правильные данные utf8.

Есть ли способ сделать это? БД - это MySQL, созданная в oscommerce Merchant v2.2.

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Прежде всего, я бы попытался определить, что такое набор символов данных. Для этого:

  • используйте SHOW CREATE TABLE, чтобы узнать параметры сортировки таблицы MySQL, которая содержит данные в
  • настроить ваш клиент на использование того же сопоставления (это гарантирует, что перевод не выполняется)
  • экспортировать таблицу с mysqldump в файл на сервере

Теперь у вас есть копия данных из таблицы, которая не изменена, и байты за байтом совпадают с данными, хранящимися в базе данных. Используя ваш любимый текстовый редактор, попробуйте переключить кодировки наборов символов и определите, в каком наборе символов хранятся данные. Когда вы в конечном итоге установите правильный набор символов в браузере, текст будет отображаться правильно.

Вероятными кандидатами на кодирование будут ISO-8859-7 или UTF-8.

Как только вы определили правильную кодировку, вы сможете изменить кодировку кодировки в файле mysqldump, а затем правильно загрузить эти данные в новую таблицу.

0 голосов
/ 28 июля 2011

Сначала вам нужно выяснить оригинальную кодировку, я предлагаю вам получить текстовый редактор, который позволяет «Загрузить как (кодирование)», например EmEditor , скопировать текст в текстовый файл и открыть его как другой.кодировки и посмотрите, в какой кодировке это выглядит правильно.Затем мы можем поговорить о том, как преобразовать это в UTF-8.


ОБНОВЛЕНИЕ: Я только что проверил ваш файл дампа, скопировав небольшую часть странно выглядящего текста в текстовый файл, сохранив в виде двоичного файла иповторное открытие, когда UTF-8 отображается как греческий, создайте страницу php, например:

<html>
<head>
     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
$res = mysql_query( 'SELECT BINARY first_name FROM address_book LIMIT 5' );
while( $r = mysql_fetch_row( $res ) ) {
    echo $r[0].'<br />';
}
?>
</body>
</html>

посмотрите, что вы получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...