Проблема с кодировкой, MySQL и get_meta_tags()

Я пытаюсь получить метатеги HTML с помощью PHP, используя функцию get_meta_tags(). Я использую UTF8 для таблиц, кодировки/сопоставления, в качестве кодировки подключения к MySQL и всего остального.

Но, к сожалению, MySQL обрезает строку при вставке в таблицу. Это происходит, когда кодировки HTML отличаются от UTF-8 (например, ISO 8859-1).

Есть ли способ преобразовать строки в UTF8, не зная его кодировки?


person she hates me    schedule 03.11.2009    source источник


Ответы (2)


Кодирует строку 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 независимо от кодировки, checkout;

Преобразование кодировки символов (PHP 4 >= 4.0.6, PHP 5)

строка mb_convert_encoding ( строка str, строка to_encoding [, смешанная from_encoding] )

person Ahmed Memon    schedule 03.11.2009
comment
Вы также можете проверить, какая кодировка используется с помощью строки mb_detect_encoding (string str [,mixed encoding_list[, bool strict]] ) - person Ahmed Memon; 03.11.2009

Пример:

<?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(),...

person webgalaxy    schedule 22.12.2012