Базы данных, кодировка символов, PDF-файлы и XML

У меня небольшие проблемы с кодировкой символов.

Ситуация

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

Проблема

Кодировка символов . С самого начала кодировка символов играла большую роль. Я бы хотел знать;

  • Какая кодировка символов вообще покрывает весь "спектр". Например, °, который не распознается при разборе XML, или смарт-кавычка ().. Умная цитата превратится в ’и т.д. и т.п.
  • Как хранить XML в базе данных. Шифрование возможно, однако кодирование базы данных - это то, где я теряюсь.
  • Как получить сущности,умные кавычки (и другие символы, которые могут привести к правильному отображению проблемы )в базе данных и с Åперед материалом.

Попытки обхода

Я сделал различные функции, которые «пытаются» решить мою проблему -, преобразуя одни символы в другие. Однако я предполагаю, что это совершенно неправильный способ сделать это, и я должен изменить кодировку символов.

/*
 * Converts smart quotes to ascii
 */
function convert_smart_quotes($string) {
    $string = iconv("UTF-8", "UTF-32", $string);
    $string = mb_convert_encoding($string, 'HTML-ENTITIES', 'UTF-32');
    $string = str_replace('', '', $string);
    $search = array('‘', '’', '“', '”', '—'); 
    $replace= array("'", "'", '"', '"', '-');
    $string = str_replace($search, $replace, $string);
    return $string; 
}
/*
 * Converts some entities to an ISO format?
 * 
 * Example  : ° => °
 */
function entity_to_iso($string) {
    return html_entity_decode($string, ENT_QUOTES & ~ENT_COMPAT, 'ISO-8859-1');
}

В конечном счете, моя проблема заключается в том, что я не знаю кодировку загружаемого файла. У меня была идея switch, которая пытается преобразовать символы во что-то более похожее на базу данных и «дружественное к PDF». Тем не менее, многие поиски в Google привели к горьким обходным решениям или массивам, которые str_replaceменяют одно на другое. Это действительно решение?

Любые советы, решения или пальцы, указывающие в лучшем направлении, полезны и высоко ценятся. Спасибо.

7
задан nderjung 23 July 2012 в 23:00
поделиться