У меня небольшие проблемы с кодировкой символов.
Ситуация
Загружается файл, который конвертируется в XML. Кодировка символов этого файла различается, однако могут появляться смарт-кавычки, сущности и различные символы ASCII. После преобразования этого файла в XML он сохраняется в базе данных. По запросу пользователя XML может быть извлечен из базы данных и преобразован в массив, где он затем создан в формате PDF.
Проблема
Кодировка символов . С самого начала кодировка символов играла большую роль. Я бы хотел знать;
°
, который не распознается при разборе 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
меняют одно на другое. Это действительно решение?
Любые советы, решения или пальцы, указывающие в лучшем направлении, полезны и высоко ценятся. Спасибо.