J'ai essayé de convertir le texte en ou depuis utf8, ce qui n'a pas semblé aider.
Je suis en train:
"It’s Getting the Best of Me"
CA devrait etre:
"It’s Getting the Best of Me"
Je reçois ces données à partir de cette URL.
Pour convertir en entités 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"
);
?>
Voir docs pour mb_convert_encoding pour plus d'options de codage.
Assurez-vous que votre en-tête HTML spécifie utf8
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Cela fait généralement l'affaire pour moi (évidemment si le contenu IS utf8).
Vous n'avez pas besoin de convertir en entités HTML si vous définissez le type de contenu.
Votre contenu est bon; le problème vient des en-têtes que le serveur envoie:
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 doit être défini sur Content-type: text/plain; charset=utf-8
, car cette page n'est pas HTML et utilise le codage utf-8. Chrome sur Mac devine ISO-8859-1 et affiche les caractères que vous décrivez.
Si vous ne maîtrisez pas le site, spécifiez le codage UTF-8 pour la fonction que vous utilisez pour récupérer le contenu. Je ne connais pas suffisamment PHP pour savoir exactement.
Je sais que la question a été répondue, mais la définition de méta-tags ne m'a pas aidé dans mon cas et la réponse sélectionnée n'était pas assez claire. Je souhaitais donc fournir une réponse plus simple.
Donc, pour rester simple, stockez string dans une variable et procédez comme cela
$TVrageGiberish = "It’s Getting the Best of Me";
$notGiberish = mb_convert_encoding($TVrageGiberish, "HTML-ENTITIES", 'UTF-8');
echo $notGiberish;
Ce qui devrait retourner ce que vous vouliez It’s Getting the Best of Me
Si vous analysez quelque chose, vous pouvez effectuer une conversion en assignant des valeurs à une variable telle que celle-ci, où $TVrage
est un tableau avec toutes les valeurs, XML dans cet exemple à partir d'un flux comportant la balise "Title" pouvant contenir des caractères spéciaux tels que ‘
ou ’
.
$cleanedTitle = mb_convert_encoding($TVrage->title, "HTML-ENTITIES", 'UTF-8');
Si vous êtes ici parce que vous rencontrez des problèmes de caractères indésirables sur votre site WordPress, essayez ceci:
Ouvrez wp-config.php
Commentez define('DB_CHARSET', 'utf8')
et 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', '');
On dirait que vous utilisez des fonctions de chaîne standard sur des caractères UTF8 (’) qui n’existent pas dans ISO 8859-1 . Vérifiez que vous utilisez les paramètres et fonctions compatibles avec Unicode PHP. Voir aussi les fonctions multibyte string.
J'ai regardé le lien, et il me semble que UTF-8. c'est-à-dire que dans Firefox, si vous choisissez Affichage, Encodage des caractères, UTF-8, cela apparaîtra correctement.
Donc, il vous suffit de comprendre comment obtenir votre code PHP pour le traiter en UTF-8. Bonne chance!
Juste essayer ceci
si $text
contient des caractères étranges, faites ceci:
$mytext = mb_convert_encoding($text, "HTML-ENTITIES", 'UTF-8');
et vous avez terminé ..
Pour fopen
et file_put_contents
, cela fonctionnera:
str_replace("’", "'", htmlspecialchars_decode(mb_convert_encoding($string_to_be_fixed, "HTML-ENTITIES", "UTF-8")));
essaye ça :
html_entity_decode(mb_convert_encoding(stripslashes($text), "HTML-ENTITIES", 'UTF-8'))
si tout semble ne pas fonctionner, cela pourrait être votre meilleure solution.
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
== ou ==
<?php
$content="It’s Getting the Best of Me";
$content = str_replace("’", "'", $content);
echo $content;
?>
Nous avons eu du succès dans l'autre sens en utilisant ceci:
mb_convert_encoding($text, "HTML-ENTITIES", "ISO-8859-1");
utilisez ceci
<meta http-equiv="Content-Type" content="text/html; charset=utf8_unicode_ci" />
au lieu de cela
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />