Charset问题,MySQL和get_meta_tags()

时间:2009-11-03 05:49:32

标签: php mysql encoding character-encoding

我正在尝试使用get_meta_tags()函数通过PHP获取HTML元标记。我正在使用UTF8表,charset / collat​​ions,连接charset到MySQL等等。

但不幸的是,MySQL在插入表格时会切断字符串。当HTML编码与UTF-8(例如ISO 8859-1)

不同时,会发生这种情况

有没有办法在不知道编码字符集的情况下将字符串转换为UTF8?

2 个答案:

答案 0 :(得分:1)

示例:

<?php 
// ------------------------------------------------------------ 

header('Content-Type:text/html; charset=utf-8');


// ------------------------------------------------------------ 

function str_to_utf8($string) { 
    if (mb_detect_encoding($string, 'UTF-8', true) === false) { 
    $string = utf8_encode($string); 
    } 
    return $string; 
}

// ------------------------------------------------------------ 


$url = 'http://example.org';    // ---- The URL to get Meta-Tags from --- 


// ------------------------------------------------------------ 

$meta_raw = get_meta_tags($surl);

$meta_enc = array(); 

foreach($meta_raw as $mkey => $mval) { 
   $meta_enc[$mkey] = str_to_utf8($mval); 
}


// ------------------------------------------------------------ 

print "<p>the (old) raw data</p>\n";
print "<pre style=\"margin:6px; padding:6px; background:#FFFFCC; text-align:left;\">\n";
print_r($meta_raw);
print "</pre>\n";

print "<br />\n";
print "<br />\n";

// ------------------------------------------------------------ 

print "<p>the (new) utf8 encoded data</p>\n";
print "<pre style=\"margin:6px; padding:6px; background:#DEDEDE; text-align:left;\">\n";
print_r($meta_enc);
print "</pre>\n";

print "<br />\n";
print "<br />\n";

// ------------------------------------------------------------ 
?>

:)

函数中的

:str_to_utf8($ string){...} 您还可以使用不同的方式来对$ string进行dedect和编码 像iconv(),mb_convert_encoding(),...

答案 1 :(得分:0)

将ISO-8859-1字符串编码为UTF-8(PHP 3&gt; = 3.0.6,PHP 4,PHP 5)

  

string utf8_encode(string data)

将字符串转换为请求的字符编码(PHP 4&gt; = 4.0.5,PHP 5)

  

string iconv(string in_charset,   string out_charset,string str)

但是,如果您想要更改为UTF-8而不考虑编码,请结帐;

转换字符编码(PHP 4&gt; = 4.0.6,PHP 5)

  

string mb_convert_encoding(string   str,string to_encoding [,mixed   from_encoding])