簡體   English   中英

字符集問題,MySQL和get_meta_tags()

[英]Charset problem, MySQL and get_meta_tags()

我正在嘗試通過使用get_meta_tags()函數來使用PHP獲取HTML元標記。 我正在將UTF8用於表,字符集/排序規則,作為到MySQL和其他所有對象的連接字符集。

但不幸的是,MySQL在插入表時會切斷字符串。 HTML編碼不同於UTF-8時會發生這種情況(例如ISO 8859-1)

有什么方法可以在不知道字符串編碼字符集的情況下將其轉換為UTF8嗎?

例:

<?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,例如iconv(),mb_convert_encoding(),...

將ISO-8859-1字符串編碼為UTF-8(PHP 3> = 3.0.6,PHP 4,PHP 5)

字符串utf8_encode(字符串數據)

將字符串轉換為請求的字符編碼(PHP 4> = 4.0.5,PHP 5)

字符串iconv(字符串in_charset,字符串out_charset,字符串str)

但是,如果您希望不考慮編碼而更改為UTF-8,請簽出;

轉換字符編碼(PHP 4> = 4.0.6,PHP 5)

字符串mb_convert_encoding(字符串str,字符串to_encoding [,混合from_encoding])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM