Php 获取页面的字符集并将其转换

Php 获取页面的字符集并将其转换,php,curl,utf-8,character-encoding,Php,Curl,Utf 8,Character Encoding,在post消息中创建URL预览,如在FB上。 在文本区域中发布url时,此url的预览如下所示。 标题、描述、图像等 不同页面的字符集编码有问题。 我的页面是UTF-8格式,如果预览url不是UTF-8格式,我的页面上会显示不正确的文本。 我需要获取url的字符集,将其转换为utf-8,然后从中获取所需信息并在我的页面上显示 事实上,我把它溢出了),但没有找到一个好的方法来做这件事 最后我这样做了,效果很好。 请你检查一下这是不是正确的短一点的方法 $post_url='http://websi

在post消息中创建URL预览,如在FB上。 在文本区域中发布url时,此url的预览如下所示。 标题、描述、图像等

不同页面的字符集编码有问题。 我的页面是UTF-8格式,如果预览url不是UTF-8格式,我的页面上会显示不正确的文本。 我需要获取url的字符集,将其转换为utf-8,然后从中获取所需信息并在我的页面上显示

事实上,我把它溢出了),但没有找到一个好的方法来做这件事

最后我这样做了,效果很好。 请你检查一下这是不是正确的短一点的方法

$post_url='http://website.domain';

/// Get headers ////////////////////////////////////////////////////////////
function get_headers_curl($url) 
{ 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL,            $url); 
    curl_setopt($ch, CURLOPT_HEADER,         true); 
    curl_setopt($ch, CURLOPT_NOBODY,         true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT,        15); 

    $r = curl_exec($ch); 
    return $r; 
}
$the_header = get_headers_curl($post_url);
/// check for redirect /////////////////////////////////////////////////
if (preg_match("/Location:/i", $the_header)) {
    $arr = explode('Location:', $the_header);
    $location = $arr[1];

    $location=explode(chr(10), $location);
    $location = $location[0];

$the_header = get_headers_curl(trim($location));
}
/// Get charset /////////////////////////////////////////////////////////////////////
if (preg_match("/charset=/i", $the_header)) {
    $arr = explode('charset=', $the_header);
    $charset = $arr[1];

    $charset=explode(chr(10), $charset);
    $charset = $charset[0];
    }
///////////////////////////////////////////////////////////////////////////////
// echo $charset;

if($charset && $charset!='UTF-8') { $html = iconv($charset, "UTF-8", $html); }
如果没问题,可能有人需要它。
谢谢。

听起来确实不错,您可以根据我给出的答案查找php认为是的字符集,如果缺少字符集,则可以查找。;)我曾尝试使用
mb\u detect\u编码
,但工作不正常。据我所知,它使用的是系统语言环境,而且它只在某些情况下工作。那么你从哪里得到它,即使用语言环境?