Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: кодировка в DOMDocument

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 09 Ноября, 2017 - 17:00:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




имеем код
PHP:
скопировать код в буфер обмена
  1.  
  2. // код страницы cp1251
  3. header('Content-Type: text/html; charset=UTF-8', true);
  4.  
  5. $oDom = new DOMDocument('1.0', 'utf-8');
  6. $textData = '<div>
  7. русский
  8. влякое при всякое
  9. </div>
  10. ';
  11.  
  12. $textData = iconv('CP1251', 'UTF-8', $textData);
  13.  
  14. $oDom->loadHTML($textData);
  15. $books = $oDom->getElementsByTagName('*');
  16. foreach ($books as $book) {
  17.         echo $book->nodeValue;
  18.         //echo iconv('ISO-8859-1', 'UTF-8', $book->nodeValue);
  19. }
  20.  

жостко указал код страницы, вроде также жостко указал DOMDocument('1.0', 'utf-8') и тут кодировку, и сам код вроде тоже $textData = iconv('CP1251', 'UTF-8', $textData); правильно указал.
но на выходе имеем текст
Спойлер (Отобразить)


до этого с сайта кодировок www.artlebedev.ru выходило, что возвращается в кодировке ISO-8859-1

на на моем денвере не получается по человечески перекодировать с ISO-8859-1
на выходе получаем
Спойлер (Отобразить)



в общем КАК РАБОТАТЬ С КОДИРОВКОЙ в DOMDocument??
 
 Top
Vladimir Kheifets
Отправлено: 09 Ноября, 2017 - 20:18:42
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




DlTA пишет:
имеем код
PHP:
скопировать код в буфер обмена
  1.  
  2. // код страницы cp1251
  3. header('Content-Type: text/html; charset=UTF-8', true);
  4.  
  5. $oDom = new DOMDocument('1.0', 'utf-8');
  6. $textData = '<div>
  7. русский
  8. влякое при всякое
  9. </div>
  10. ';
  11.  
  12. $textData = iconv('CP1251', 'UTF-8', $textData);
  13.  
  14. $oDom->loadHTML($textData);
  15. $books = $oDom->getElementsByTagName('*');
  16. foreach ($books as $book) {
  17.         echo $book->nodeValue;
  18.         //echo iconv('ISO-8859-1', 'UTF-8', $book->nodeValue);
  19. }
  20.  

жостко указал код страницы, вроде также жостко указал DOMDocument('1.0', 'utf-8') и тут кодировку, и сам код вроде тоже $textData = iconv('CP1251', 'UTF-8', $textData); правильно указал.
но на выходе имеем текст
Спойлер (Отобразить)


до этого с сайта кодировок www.artlebedev.ru выходило, что возвращается в кодировке ISO-8859-1

на на моем денвере не получается по человечески перекодировать с ISO-8859-1
на выходе получаем
Спойлер (Отобразить)



в общем КАК РАБОТАТЬ С КОДИРОВКОЙ в DOMDocument??


Добрый вечер!
Мне кажется, что проблема не с кодировкой DOMDocument.
У Вас кодировка страницы UTF-8. На ней
$textData = '<div>
русский
влякое при всякое
</div>

$textData в кодировке страницы т.е. в UTF-8
В $textData = iconv('CP1251', 'UTF-8', $textData) указана входная кодировка CP1251 выходная UTF-8 Не ошибка ли это?
Удачи!
 
 Top
DlTA
Отправлено: 10 Ноября, 2017 - 12:06:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Vladimir Kheifets пишет:
В $textData = iconv('CP1251', 'UTF-8', $textData) указана входная кодировка CP1251 выходная UTF-8 Не ошибка ли это?


вроде нет, проблема не в том как выводить, а в том что я не могу получить понятный текст.
то что я получаю нельзя преобразовать что то понятное
 
 Top
Vladimir Kheifets
Отправлено: 11 Ноября, 2017 - 08:00:54
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




DlTA пишет:
Vladimir Kheifets пишет:
В $textData = iconv('CP1251', 'UTF-8', $textData) указана входная кодировка CP1251 выходная UTF-8 Не ошибка ли это?


вроде нет, проблема не в том как выводить, а в том что я не могу получить понятный текст.
то что я получаю нельзя преобразовать что то понятное

Доброе утро!
Советую Вам убрать и iconv и добавить <?xml encoding="utf-8"?>
см. код и результат:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // код страницы cp1251
  3. header('Content-Type: text/html; charset=UTF-8', true);
  4. $oDom = new DOMDocument();
  5. $textData = '<div>
  6. русский
  7. влякое при всякое
  8. </div>
  9. ';
  10. echo "<pre><b>textData перед iconv:</b>". $textData."</pre>";
  11. $textDataIconv = iconv('CP1251', 'UTF-8', $textData);
  12. echo "<pre><b>textData после iconv:</b>". $textDataIconv."</pre>";
  13.  
  14. echo "<pre><b>textData после Dom:</b>";
  15. $oDom->loadHTML('<?xml encoding="utf-8"?>'.$textData);
  16. $books = $oDom->getElementsByTagName('*');
  17. foreach ($books as $book) {
  18.         echo $book->nodeValue."</pre>";
  19.         //echo iconv('ISO-8859-1', 'UTF-8', $book->nodeValue);
  20. }
  21. echo "</pre>";
  22. ?>


textData перед iconv:
русский
влякое при всякое

textData после iconv:
СЂСѓСЃСЃРєРёР№
влякое при всякое

textData после Dom:
русский
влякое при всякое

Удачи!

(Отредактировано автором: 11 Ноября, 2017 - 08:11:42)

 
 Top
DlTA
Отправлено: 13 Ноября, 2017 - 10:33:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ну, опупеть.

но решил чуток посмотреть и получил:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. header('Content-Type: text/html; charset=UTF-8', true);
  4. $dom = new domDocument('1.0', 'CP1251');
  5. // страничка в cp1251
  6. $dom->loadHTML('<?xml ?>'.iconv('CP1251', 'UTF-8', "<p>Германия, Великобритания и Франция</p>"));
  7. foreach($dom->getElementsByTagName('p') as $p_dom)
  8.         echo $p_dom->nodeValue;
  9. ?>
  10.  


и выдало все в UTF-8.
без <?xml ?> все выдает в кодировке ISO-8859-1

косячина...

(Отредактировано автором: 13 Ноября, 2017 - 10:34:59)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Кодировки и все смежное »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB