Latin-1 / l'encodage UTF-8 php

J'ai une base de données en UTF-8 avec un mélange de Latin-1. (Je pense que c'est ça le problème)

C'est la façon dont les personnages regarder dans la base de données.

Ä° (should be İ)
è

Quand j'ai la tête à

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

Puis les personnages sortent comme:

 İ
 

Quand j'enlève l'en-tête, ils sortent comme ils le sont dans la base de données. Je veux qu'ils sortent comme ceci:

 İ
 è

Je suis à la recherche d'un moyen de remédier à cela en PHP après le fait, si c'est possible. Je suis incapable de corriger les données lui-même à ce moment, ce qui serait la bonne chose à faire.

  • Comment pouvez-vous avoir deux codages différents dans une table db?
  • Vous devez choisir un codage et de s'y tenir. Vous ne pouvez pas sortir d'un mélange de jeux de caractères. Personnellement, je dirais le droit de réponse ici est de convertir l'ensemble de votre base de données Unicode et être fait avec elle. Si vous ne pouvez pas le faire pour quelque raison que ce soit, vous aurez besoin de convertir les chaînes de caractères à un codage unique avant la sortie sur la page, et de déclarer que le codage de la page. Encore une fois, je vous recommande de choisir Unicode pour votre sortie de jeu de caractères.
  • Je suis d'accord avec @DaveRandom. Vous pouvez ajouter une nouvelle colonne qui indique l'encodage à utiliser. Toutefois, pour remplir cette colonne, vous devez le faire manuellement (ou au moins vérifier manuellement).
  • Avez-vous mis l'Encodage UTF-8 lorsque vous avez ajouté les données de formulaire en db?
  • Lecture recommandée: kunststube.net/encoding kunststube.net/frontback
  • Il y a beaucoup de choses à configurer pour utiliser UTF-8. Le <meta> balise est peut-être le plus hors de propos. Exactement comment avez-vous vérifier que le contenu réel de la bd? Êtes-vous à l'aide d'un client MySQL comme établi ou HeidiSQL?
  • Workbench
  • Alors, si İ est stockée en tant que Ä°, vous avez probablement oublié de paramétrer la connexion d'encodage quelle que soit votre classe DB est. Vous devez d'abord vous assurer de magasin les données correctement. L'affichage il s'agit par la suite. Merci de lire la "avant-arrière" lien par DaveRandom.
  • Ä° est l'ISO-8859-1 représentation de 0xC4 0xB0, qui est İ si on l'interprète comme de l'UTF-8. En bref, les octets sont à droite, mais l'interprétation est erronée.

InformationsquelleAutor Paul Stanley | 2013-04-23