Советы о том, как исправить Unicode, языковые проблемы в существующей базе данных - PullRequest
1 голос
/ 22 февраля 2011

У меня есть клиент, который испортил символы в своей базе данных (я унаследовал этот проект, и я предполагаю, что когда пользователи вводили текст, он не был обработан или сохранен правильно, либо через PHP или MySQL, либо и то, и другое).Например,

Пример 1: поле базы данных ("about") имеет значения, которые выглядят следующим образом:

Dans la nature, face au ciel, un b% uFFFDb% uFFFD quis sourit quandна lui souffle sur le visage.

Параметры сортировки для этого поля в MySQL в настоящее время установлены на: latin1_swedish_ci

Пример 2: Другое поле («описание») выглядит следующим образом:

Vidâ € ™ s tournÃÆÂà © e dans le cadre

Параметры сортировки в этом поле в MySQL в настоящее время установлены на: utf_general_ci

В основном я должен исправить всеэтот.Эти примеры французские, но есть и другие записи, которые могут содержать японские или китайские символы (например, двухбайтовые символы).

Для записей, подобных примеру 1, я планирую изменить поле на utf_general_ci и написать скрипт дляпреобразовать все коды Unicode в символы (я не совсем уверен, как сделать эту последнюю часть ... идеи ??).

Для записей, подобных примеру 2, я не уверен, что это за странные символыявляются.

Является ли utf_general_ci сопоставлением, которое я должен использовать здесь для поддержки всех возможных языков в одной таблице базы данных?

Другие характеристики:

[peter @ akebono A_PSG] $ php -версия PHP 5.2.6 (cli) (сборка: 8 мая 2008 г., 08:54:23) Copyright (c) 1997-2008 PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies с Zend Debugger v5.2.14, Copyright (c) 1999-2008, Zend Technologies

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Посмотрите в этой статье, какие подходы вы можете использовать: http://www.phpwact.org/php/i18n/charsets

Я помню, у нас была такая же проблема, но мы использовали утилиту mysql для изменения кодировки.Я забыл, какой сейчас.

В PHP вы должны смотреть на iconv и другие методы кодирования / декодирования наборов символов, чтобы определить текущую кодировку и изменить ее на любой стандарт, который вы собираетесь использовать.

РЕДАКТИРОВАТЬ

Также посмотрите на многобайтовые методы в php.Начать с: http://www.php.net/manual/en/function.mb-convert-encoding.php

0 голосов
/ 22 февраля 2011

Я не уверен, что вы можете декодировать его обратно без потери данных, но я бы порекомендовал вам сделать это - использовать <a href="http://www.php.net/manual/en/function.utf8-encode.php" rel="nofollow">utf8_encode()</a> перед вставкой данных в базу данных, так как это может уменьшить количество проблем, когда вы попытался бы вывести ваши данные в XML, например.

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