XML-файл UTF-8 показывает Gibberish - PullRequest
2 голосов
/ 15 мая 2010

У меня есть XML-файл в кодировке UTF-8, который был экспортирован из базы данных Wordpress MySQL.

Пока файл сохраняется как UTF-8, а кодировка UTF-8, вместо текста на иврите, который должен быть там, я получаю тарабарщину, которая выглядит следующим образом:

™ × • × × ~ • × ª

Как найти оригинальную кодировку или кодировку и преобразовать текст в правильный иврит?

PHP mb_detect_encoding ($ str); возвращает UTF-8

Перепробовал все виды функций кодирования php с различными настройками и кодировками ввода / вывода, но все они просто печатают разные выглядящие тарабарские блоки, например:

ÃâÃËÃâ ¢ ¢ Ä AEA

и

× × © × ž ×

... Есть идеи, как это сделать?

Ответы [ 4 ]

2 голосов
/ 25 июля 2014
function convert($str) {
    $hebrew = array("א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת", "ך", "ם", "ן", "ף", "ץ");
    $gibberish = array("à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ë", "ì", "î", "ð", "ñ", "ò", "ô", "ö", "÷", "ø", "ù", "ú", "ê", "í", "ï", "ó", "õ");
    return str_replace($gibberish, $hebrew, $str);
}

$hebrew_string = convert(utf8_encode($gibberish_string));
1 голос
/ 16 мая 2010

Если у вас есть доступ к базе данных, вы можете легко это исправить, экспортировав ее как latin1 и импортировав как UTF8. Как это было предложено здесь .

0 голосов
/ 16 мая 2010

взгляните на ваш php-файл, возможно, это не utf-8, и именно поэтому ваш xml-запрос возвращает эту нежелательную строку.

0 голосов
/ 15 мая 2010

Это очень похоже на этот вопрос.

Из того, что я мог видеть, это искаженная строка Юникода, где каждый символ Юникода закодирован как два символа Юникода.

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

...