Comment faire pour convertir n'importe quel caractère de l'encodage UTF8 sur PHP
Je suis en train de travailler sur un web crawler qui saisit des données à partir de sites partout dans le monde, et est de traiter avec les langues et les codages.
Actuellement, je suis en utilisant la fonction suivante, et il fonctionne dans 99% des cas. Mais il est ce 1% qui me donne des maux de tête.
function convertEncoding($str) {
return iconv(mb_detect_encoding($str), "UTF-8", $str);
}
Pourquoi êtes-vous à l'aide de deux iconv et mbstring? Utilisation mb_convert_encoding si vous souhaitez utiliser la chaîne multi-octets extension.
je l'ai essayé... même le retour... une idée?
double possible de PHP: Convertir une chaîne en UTF-8 sans connaître l'original jeu de caractères, ou au moins essayer
je l'ai essayé... même le retour... une idée?
double possible de PHP: Convertir une chaîne en UTF-8 sans connaître l'original jeu de caractères, ou au moins essayer
OriginalL'auteur rafaschutz | 2011-07-02
Vous devez vous connecter pour publier un commentaire.
Plutôt que de aveuglément essayer de détecter l'encodage, vous devriez d'abord vérifier si la page que vous avez téléchargé est répertorié comme un jeu de caractères. Le jeu de caractères peut être définie dans l'en-tête de réponse HTTP, par exemple:
Ou dans le HTML, meta-tags, par exemple:
Seulement si aucun n'est disponible, alors essayez de deviner l'encodage avec mb_detect_encoding() ou d'autres méthodes.
La source de l'encodage à partir de cette page YouTube est en UTF-8, donc il n'y a vraiment rien à convertir ici..
Fait quelques autres tests... obtenir des résultats positifs réglage de l'un d'encodage 🙂 ... tks pour l'astuce
OriginalL'auteur sagi
Il n'est pas possible de détecter le jeu de caractères dans une chaîne avec un taux de 100% car certains jeux de caractères sont sous-ensemble de quelques autres. Essayez de définir le caractère explicitement définie, si possible sans mélange iconv et mbstring fonctions. Je recommande d'utiliser une fonction comme celle-ci et la fourniture de de charset chaque fois que possible:
im test avec le source suivant lien
Chers afaschutz, merci de lire ma réponse soigneusement. Je n'ai pas la prétention il va travailler pour votre situation. J'ai expliqué pourquoi votre chemin n'est pas droit et a offert une meilleure façon.
ive a entendu que... tks pour l'astuce
Aussi, la plupart des jeux de caractères/codages utiliser le même octets que d'autres, mais avec d'autres significations (comme la plupart de l'ISO-8859-x). Parfois, on peut de manière fiable suppose que cela dépend de la distribution des personnages (qui dépend de la langue), mais souvent, vous aurez besoin d'une grande quantité de texte pour que cela fonctionne de manière fiable.
OriginalL'auteur Emre Yazici
Vous pouvez essayer utf_encode($str).
http://www.php.net/manual/en/function.utf8-encode.php#89789
Ou vous pouvez remplacer le type de contenu de la balise meta avec
à partir de l'en-tête de contenu analysé
OriginalL'auteur Kulin Choksi