Convertir ISO-8859-2 pour l'encodage UTF-8 (caractères polonais)
Je suis en train d'essayer de parser un fichier XML (http://jstryczek.blox.pl/rss2) qui dit que son jeu de caractères ISO-8859-2. Ma base de données est en UTF-8, donc je veux le convertir en UTF-8.
À faire que j'ai exécuter les opérations suivantes sur la chaîne:
$content = iconv('ISO-8859-2', 'UTF-8//TRANSLIT', $content);
Pour une raison quelconque, je suis de retour d'un drôle d'encodage, de sorte que:
Gdzie są różnice
Vient à travers comme:
Gdzie sÄ róşnice
Est là une explication de pourquoi les polonais, les personnages ne sont pas à venir à travers? Ne UTF-8 ne sont pas les soutenir?
- Le support UTF-8 tous les caractères polonais, j'en suis sûr.
- La base de données utilisez-vous, comment sont les colonnes définies, comment êtes-vous de stocker le texte dans la base de données, et comment allez-vous le retrouver? UTF-8 prend en charge ces caractères de l'amende juste. En fait, la stackoverflow site est entièrement en UTF-8, et comme vous pouvez le voir, vous n'aviez pas de problèmes de les afficher.
- Je suis l'aide de MariaDB avec les tables en UTF8, client, la connexion est également UTF8. Je pense à une sorte de conversion implicite qui se passe quelque part, juste ne sais pas où.
- Avez-vous essayé la configuration de la connexion jeu de caractères à latin_2 et envoyer des données telles qu'elles sont à la base de données? MySQL et MariaDB j'imagine) est capable de traduire entre les codages de ce que le client envoie à l'encodage de la base de données/de la table. J'ai utilisé ce pour traduire l'UTF-8 à cp850 pour afficher correctement dans Windows cmd avant.
- S'avère, que c'était de la magie que j'avais à faire. J'ai eu un peu de code qui permettrait de vérifier certains caractères en UTF-8, ce qui était gâcher la conversion qui se passait implicitement. J'ai enveloppé que dans une case qui a vérifié la chaîne a été UTF-8 tout d'abord, et mes problèmes ont disparu. Je pense que soit Curl, PHP, ou MariaDB était en train de faire une conversion implicite, et ma conversion explicite a été doublé, ce qui provoque les problèmes.
Vous devez vous connecter pour publier un commentaire.
- Je résoudre ce problème en changeant la chaîne json et ensuite, remplacer tous les polonais des signes de code html. J'ajoute ci-dessous mon résultat:
Semble, que ce texte est déjà encodé en utf-8, donc il n'est pas nécessaire de le décoder. Quand j'ai enregistré ce fichier en utf-8 et il a couru:
J'ai obtenu ceci:
Qui est exactement le texte incorrect, vous avez obtenu.
Il suffit d'enregistrer le texte comme il est, il est déjà en utf-8.