Как мне конвертировать, отображать и хранить эти символы в PHP? - PullRequest
3 голосов
/ 27 июня 2011

У меня есть этот набор кода, который может произвольно читать веб-страницу и выводить заголовок страницы пользователю, в зависимости от того, что они вводят в поле URL, это может быть английский сайт, китайский, русский или какой-либо другой. Но проблема в том, что он продолжает отображать искаженный текст: ¹ù¸ »³Ç - Google ËÑË ÷

Любой, у кого есть идея, с благодарностью.

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php

$DOM = new DOMDocument('1.0', 'UTF-8');

if( !@$DOM->loadHTMLFile( 'http://www.google.com.sg/search?hl=zh-CN&biw=1366&bih=636&q=%E9%83%AD%E5%AF%8C%E5%9F%8E&oq=%E9%83%AD%E5%AF%8C%E5%9F%8Ea&aq=f&aqi=g10&aql=undefined&gs_sm=e&gs_upl=6545l6545l0l1l1l0l0l0l0l295l295l2-1l1aa' ) ) {
    die('cannot load!');
}
else {
    $XPath = new DOMXPath( $DOM );
    $title = strip_tags( $XPath->query('//title')->item(0)->nodeValue );
    echo $title; exit;
}

?>

Ответы [ 4 ]

3 голосов
/ 27 июня 2011

Если вы добавите &oe=utf-8 к строке запроса и используете utf8_decode() при выводе данных, это должно решить вашу проблему:

$title = utf8_decode(strip_tags($XPath->query('//title')->item(0)->nodeValue));
1 голос
/ 27 июня 2011

Попробуйте установить utf-8 в качестве типа контента в PHP ...

header ('Content-type: text/html; charset=utf-8');
1 голос
/ 27 июня 2011

Google делает некоторый пользовательский агент, сниффинг, чтобы выбрать подходящую выходную кодировку.Я не уверен, что пользовательский агент PHP DOMDocument использует и что такое возвращаемая кодировка символов, но вы можете принудительно настроить конкретную выходную кодировку, используя параметр URL oe=utf-8.

0 голосов
/ 27 июня 2011
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Вы должны вернуть кодировку содержимого, используемую исходной страницей (или явно преобразовать страницу в utf-8)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...