Опитах да конвертирам текста към или от utf8, което не изглежда да помогне.
получавам:
"It’s Getting the Best of Me"
Трябва да бъде:
"It’s Getting the Best of Me"
Получавам тези данни от този url.
Опитах да конвертирам текста към или от utf8, което не изглежда да помогне.
получавам:
"It’s Getting the Best of Me"
Трябва да бъде:
"It’s Getting the Best of Me"
Получавам тези данни от този url.
За да конвертирате в HTML обекти:
<?php
echo mb_convert_encoding(
file_get_contents('http://www.tvrage.com/quickinfo.php?show=Surviver&ep=20x02&exact=0'),
"HTML-ENTITIES",
"UTF-8"
);
?>
Вижте документи за mb_convert_encoding за повече опции за кодиране.
mb_convert_encoding()
. напр. $text = fgets($fp); $html = mb_convert_encoding($text, "HTML-ENTITIES", "UTF-8");
- person Matthew; 19.02.2010
Уверете се, че вашият html хедър посочва utf8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Това обикновено върши работа за мен (очевидно, ако съдържанието Е utf8).
Не е необходимо да конвертирате в html обекти, ако зададете тип съдържание.
Вашето съдържание е наред; проблемът е със заглавките, които сървърът изпраща:
Connection:Keep-Alive
Content-Length:502
Content-Type:text/html
Date:Thu, 18 Feb 2010 20:45:32 GMT
Keep-Alive:timeout=1, max=25
Server:Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.7 with Suhosin-Patch
X-Powered-By:PHP/5.2.4-2ubuntu5.7
Content-Type трябва да бъде зададен на Content-type: text/plain; charset=utf-8
, тъй като тази страница не е HTML и използва utf-8 кодиране. Chromium на Mac отгатва ISO-8859-1 и показва знаците, които описвате.
Ако не контролирате сайта, посочете кодирането като UTF-8 на която и да е функция, която използвате за извличане на съдържанието. Не съм достатъчно запознат с PHP, за да знам как точно.
Знам, че на въпроса беше отговорено, но задаването на мета маркер не помогна в моя случай и избраният отговор не беше достатъчно ясен, така че исках да дам по-прост отговор.
Така че, за да бъде просто, съхранявайте низ в променлива и обработвайте по този начин
$TVrageGiberish = "It’s Getting the Best of Me";
$notGiberish = mb_convert_encoding($TVrageGiberish, "HTML-ENTITIES", 'UTF-8');
echo $notGiberish;
Което трябва да върне това, което искахте It’s Getting the Best of Me
Ако анализирате нещо, можете да извършите преобразуване, докато присвоявате стойности на променлива като тази, където $TVrage
е масив с всички стойности, XML в този пример от емисия, която има етикет „Заглавие“, който може да съдържа специални знаци като ‘
или ’
.
$cleanedTitle = mb_convert_encoding($TVrage->title, "HTML-ENTITIES", 'UTF-8');
Ако сте тук, защото имате проблеми с нежелани символи във вашия WordPress сайт, опитайте това:
Отворете wp-config.php
Коментирайте define('DB_CHARSET', 'utf8')
и define('DB_COLLATE', '')
/** MySQL hostname */
define('DB_HOST', 'localhost');
/** Database Charset to use in creating database tables. */
//define('DB_CHARSET', 'utf8');
/** The Database Collate type. Don't change this if in doubt. */
//define('DB_COLLATE', '');
Изглежда, че използвате стандартни низови функции за UTF8 знаци ('), които не съществуват в ISO 8859-1. Проверете дали използвате съвместими с Unicode PHP настройки и функции. Вижте също функциите за многобайтови низове.
Имахме успех в другата посока, използвайки това:
mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1");
Просто опитайте това
ако $text
съдържа странни знаци, направете следното:
$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');
и сте готови..
ако изглежда, че всичко не работи, това може да е най-доброто ви решение.
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
==или==
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
Погледнах връзката и ми изглежда като UTF-8. т.е. във Firefox, ако изберете View, Character Encoding, UTF-8, ще се покаже правилно.
Така че, просто трябва да разберете как да накарате вашия PHP код да го обработва като UTF-8. Късмет!
Опитайте тази :
html_entity_decode(mb_convert_encoding(stripslashes($text), "HTML-ENTITIES", 'UTF-8'))
За fopen
и file_put_contents
това ще работи:
str_replace("’", "'", htmlspecialchars_decode(mb_convert_encoding($string_to_be_fixed, "HTML-ENTITIES", "UTF-8")));
Ако нито едно от горните решения не работи:
В моя случай забелязах, че единичният цитат е различен стил на единичен цитат. Вместо „моите данни имаха“. Забелязвате ли разликата в единичните кавички? Така че просто написах str_replace, за да го заменя, и това реши проблема. Вероятно не е най-елегантното решение, но свърши работата.
$string= str_replace("’","'",$string);
използвай това
<meta http-equiv="Content-Type" content="text/html; charset=utf8_unicode_ci" />
вместо това
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Трябва да проверите произхода на кодираното кодиране, след което опитайте да конвертирате в правилния тип кодиране.
В моя случай чета csv файлове, след което импортирам в db. Някои файлове се показват добре, други не. Проверявам кодирането и виждам, че файлът с ASCII кодиране се показва добре, друг файл с UTF-8 е повреден. Така че използвам следния код за конвертиране на кодиране:
if(mb_detect_encoding($content) == 'UTF-8') {
$content = iconv("UTF-8", "ASCII//TRANSLIT", $content);
file_put_contents($file_path, $content);
} else {
$content = mb_convert_encoding($content, 'UTF-8', 'UTF-8');
file_put_contents($file_path, $content);
}
След конвертирането натискам съдържанието във файл, след което обработвам импортиране в DB, сега се показва добре в предния край
Ако нищо не работи, опитайте това mb_convert_encoding($elem-›textContent, 'UTF-8', 'utf8mb4');