Как динамически заменить нечитаемые символы правильными с помощью jQuery, JS или PHP? - PullRequest
0 голосов
/ 08 июня 2011

Я не уверен, что это даже возможно, но что-то подсказывает мне, что это может быть.Буду признателен за экспертное руководство.

Мой веб-сайт на WordPress получает биты динамического контента с этого другого сайта (виджет "этот день в авиации"):

http://www.youngeagles.com/factzone/thisday.asp

Я встраиваю эти данные вмой сайт использует этот бит кода:

<div id="this_day_in_history">
<h3>This Day in Aviation History</h3>

<script src="http://www.youngeagles.com/thisday/absolutecr.asp?z=1" type="text/javascript"></script>

</div>

На исходном сайте все символы отображаются идеально, но когда они отображаются на моем сайте, некоторые цитаты и некоторые французские и испанские символызаменено на <?>.

Существует ли волшебная строка кода, которая позволила бы мне исправить внешний вид символов на моем сайте?

Желательно с помощью jQuery или JavaScript, или, может быть, есть решение на PHP?

Буду признателен за ваши предложения!

РЕДАКТИРОВАТЬ: первоначальное решение было предложено Адамом Макдональдом в качестве ответа на этот вопрос, но фрагмент кода, который он щедро написал, нуждался в паредальнейших настроек для моих целей.Окончательное решение было предложено Phoenix в отдельном потоке: Небольшой PHP-код уничтожает сайт WordPress

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Я считаю, что использование iconv лучше всего работает в php .. что-то вроде:

iconv ("UTF-8", "ISO-8859-1 // IGNORE // TRANSLIT", $ str)

Он пытается подобрать персонажа в меру своих способностей, а если нет, отбрасывает его

Кроме того, utf8_encode / decode иногда работает нормально.

EDIT:

возможно, что-то вроде этого ...

    <?php
    $contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1');
    $convertedcontents=iconv("UTF-8", "ISO-8859-1//IGNORE//TRANSLIT", $contents);
    echo "<script type=\"text/javascript\">".$convertedcontents."</script>";
    ?>

РЕДАКТИРОВАТЬ 2: на тот случай, если вы хотите увидеть изменения вместо вашего текущего кода:

    <div id="this_day_in_history">
    <h3>This Day in Aviation History</h3>
    <?php
    $contents=file_get_contents('http://www.youngeagles.com/thisday/absolutecr.asp?z=1');
    $convertedcontents=iconv("UTF-8", "ISO-8859-1//IGNORE//TRANSLIT", $contents);
    echo "<script type=\"text/javascript\">".$convertedcontents."</script>";
    ?>
    </div>
0 голосов
/ 08 июня 2011

Проблема, скорее всего, связана с несовместимой кодировкой, используемой вашим сайтом и сайтом, с которого вы получаете данные.Возможно также, что виджет получает данные и выполняет кодирование / декодирование UTF8.Что бы я сделал, это, вероятно, установить firebug, проверить возвращенные данные.Затем я отредактирую код виджета и добавлю utf8_encode() или utf8_decode() к ответу при необходимости.

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

...