je crois que c'est en grande partie une difficulté culturelle, pas technique.
comme pour les problèmes techniques---et ce n'est pas carrément tout-trivial à mettre en œuvre l'unicode dans un écosystème construit sur l'hypothèse que "l'un caractère correspond à un octet'---les développeurs pourraient avoir copié beaucoup de java ou python efforts (ce dernier avec décent et largement travailler compatibilité unicode depuis 2001), mais ils ne l'ont jamais fait.
quand j'ai lu le fil de discussion attachée à l'officiel, documentation en cours pour php utf8_encode()
de la fonction, j'obtiens un sentiment de vertige.
firstoff, cette fonction est appelée utf8_encode()
; toutefois, la documentation indique que la chaîne qu'elle attend est prévu pour être dans la norme ISO-8859-1 (un.k.un. latin-1). c'est vraiment très php, c'est vraiment très années 80.
la plupart des commentateurs semblent percevoir unicode comme un fardeau. il existe de nombreuses propositions de comment faire pour convertir des chaînes "de l'inconnu du contenu, la façon de traiter avec s'strings avec un mélange de codages' (wtf?), ou de traiter avec les codepoints que normalement entraîner la rupture parce qu'ils sont au-delà de cette fonction de quatre octets par codepoint limite.
la discussion est centrée autour de corrections pour se débarrasser de gribouillis ou pour éviter la problématique des pièces de la fonction du comportement. et qui, pour moi, est vraiment très php: tout le monde est juste faire de bugs, peu de choses sont mises en œuvre dans un de fondamentalement bon sens. si vous pensez que la calomnie, de mon côté, voici quelques bribes:
Bien que cela semble casser allemand Umlaute [aou] si le document est déjà en UTF-8.
(à défaut de comprendre que l'utf-8 n'est pas conçu pour fonctionner lorsqu'il est appliqué deux fois)
Regardez fonction iconv (), qui offre un moyen de convertir de 8859 et redouté 1252 en UTF8
(bon point: neglection de l'état de la technique sur une partie des développeurs php; au lieu de cela, buggy propre mise en œuvre)
l'utilisation de preg_match pour détecter si utf8_encode est nécessaire [...] à l'exclusion des mères porteuses [...] à l'exclusion de overlongs
(ce qui suggère silencieusement effacer tout le contenu problématique de cordes, laissant seulement ces choses qui ne cassent pas utf8_encode()
; cela peut rendre les textes illisibles (ou disparaître complètement), mais bon, plus de messages d'erreur)
pour encoder une chaîne uniquement si il n'est pas encore UTF-8 [...] mb_detect_encoding($s, "UTF-8")
(comme l'a souligné par un autre intervenant, ce n'est pas d'aller travailler:
$str = 'áéóú'; // ISO-8859-1
mb_detect_encoding($str, 'UTF-8'); // 'UTF-8'
mb_detect_encoding($str, 'UTF-8', true); // false
donc, ici, nous sommes à la recherche à un bug d'être remplacé par un autre. heureux de chasse. aussi, ce qu'ils semblent proposer ici est de résoudre un problème à l'aide de l'heuristique (lente, incertaine) signifie que l'on pourrait et devrait être résolu avec la mécanique (rapide, sûre) moyens)
utf8_[coder|décoder] sera en fait à traduire windows-1252 caractères, et pas seulement à partir de/à la norme ISO-8859-1 comme le dit la documentation
(vous ne pouvez pas toujours compter sur la documentation officielle de php pour être clair ou exhaustive---vous devez toujours lire grâce à des années d'expérience des utilisateurs qui n'auront jamais de feed-back pour les docs)
J'ai travaillé sur un is_utf8 fonction et je voulais le poster ici, en plus des autres, j'ai également pris en considération les 5000 char bug
(un correctif pour un problème qui en grande partie n'existe que parce que l'unicode n'est pas correctement mis en œuvre. nous apprenons aussi que non seulement l' utf8_encode()
fonction de donner au-delà de 4 octets par codepoint, il sera également se briser si le (ou la sortie?) texte dépasse une limite de 5000 caractères)
je pourrais continuer comme ça. vous avez déjà eu l'idée: à en juger par ce fil, la communauté php simplement ne sonne pas comme ils sont partout, prêt à saisir ce que les codages et les jeux de caractères sont tout au sujet, ce qu'il faut pour construire une infrastructure solide en général ou, plus précisément, de mettre en œuvre l'unicode dans une manière appropriée. au lieu de cela, ils utilisent leurs échafaudages, leurs cartons, leurs clous et de marteaux, et d'aller sur la construction de ce grand édifice appelé php, jetant leurs ruban adhésif à tous les problèmes qui ne peuvent pas être annulés avec un autre clou. bien sûr, il va souffrir de chaque vent qui vient à souffler, comme les occasionnels juridique mais caractère inattendu.
voir ce thread particulier d'être actif pendant huit ans, ne correspond pas exactement à insuffler de la confiance de la situation va être de mieux en huit ans à partir de maintenant.