我正在尝试使用get_meta_tags()函数通过PHP获取HTML元标记。我正在使用UTF8表,charset / collations,连接charset到MySQL等等。
但不幸的是,MySQL在插入表格时会切断字符串。当HTML编码与UTF-8(例如ISO 8859-1)
不同时,会发生这种情况有没有办法在不知道编码字符集的情况下将字符串转换为UTF8?
答案 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])