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.
InformationsquelleAutor hukir | 2013-08-24