Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jQuery + PHP + DOMDocument, на выходе не та кодировка  
V
    Опции темы
Logree
Дата 25.11.2012, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



Здравствуйте есть такая проблема:
отправляем некоторый html код в cp1251 к PHP через $.post
Код

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
    <style>
        
    </style>
</head>
<body>
    <script type="text/javascript">    
        var host = "http://localhost";
        $.post(host+"index.php",{name: window.name}, dataPrepare);
        function dataPrepare(data) {
            $("#list").html(data);
        }
    </script>
    <div id="list"></div>
</body>
</html>

в index.php засовываем данные в DOMDocument  для разбора выдираем нужные поля 
Код

<?php
    header('Content-Type: text/html; charset=utf-8');
    
    /*
     * Cheak parametr present
     */
    if (!isset($_POST['name'])) {
        exit;
    }

    list($location,$innerHtml) = explode("!",$_POST['name'],2);
    
    $dom = new DOMDocument();
    $dom->preserveWhiteSpace = false;
    @$dom->loadHTML($innerHtml);
    

    $links = array();
    $domxpath = new DOMXPath($dom);    

    $filtered =  $domxpath->query('//div[@class="'.CONTAINER_CLASS.'"]');
    $i = 0;
    while( $myItem = $filtered->item($i++) ){
        list($link,$tmp) = explode(",",$myItem->lastChild->attributes->getNamedItem("value")->nodeValue,2);
        $links[] = $link; 
    }

    echo <тут выводим значения из тегов>
?>

и получается что русские символы - каракули.

костыли из этой темы пробывал http://forum.vingrad.ru/forum/topic-69409.html не помогли.
Я так понимаю проблема в том что $.post посылает содержимое запроса в utf-8 хотя она на самом деле в cp1251
пробовал iconv:

Код


$post = iconv("WINDOWS-1251","UTF-8" , $_POST['name']);
list($location,$innerHtml) = explode("!",$post,2);
    
    $dom = new DOMDocument();
    $dom->preserveWhiteSpace = false;
    @$dom->loadHTML($innerHtml);

пишет
Цитата

Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:\www\index.php on line 37

Видимо кодировка уже кривая... Что с этим делать?

Добавлено через 4 минуты и 36 секунд
балин как только запостил нашёл решение костыль:

Код

@$dom->loadHTML('<?xml encoding="UTF-8">'.$innerHtml);
$dom->encoding = 'utf-8';

 smile 


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
Fortop
Дата 25.11.2012, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(Logree @  25.11.2012,  18:57 Найти цитируемый пост)
отправляем некоторый html код в cp1251 к PHP через $.post

Насколько я знаю всеми стандартными Js библиотеками он всегда передается в utf8



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0996 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.