jQuery: AJAX trémas & caractères spéciaux sont un gâchis

Je viens de créer ma première fonction ajax avec jQuery qui fonctionne réellement, mais malheureusement, l'encodage des caractères (pour les personnages comme ä, ö, ü, ß, è, æ, å, ø) est un cauchemar.

Mes fichiers et ma base de données sont tous en UTF-8. J'ai essayé une multitude d'options dans la fonction ajax et le PHP de la fonction, aucune n'était satisfaisante.

C'est mon ajax

var dataString = {
 'name': name,
 'mail': mail
 //other stuff
}


    $.ajax({
type: "POST",
url: "/post.php",
data: dataString,
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
cache: false,
success: function(html){
 //do stuff
}

Je l'ai essayé sans contentType: "application/x-www-form-urlencoded;charset=UTF-8" et j'ai essayé d'envelopper les données affectées dans encodeURIComponent(), aucun n'a fonctionné.

Quand je l'utiliser AJAX avec htmlentities() dans mon php, mon trémas ressembler à ceci en texte brut:
UE �, AE �, OE �, de l'ue ü, ae ä, oe o

Et comme cela dans la base de données:
UE Ãœ , AE Ã", OE Ö, de l'ue ü, ae ä, oe o

Si je n'utilise pas de htmlentities (), mais mysql_real_escape_string() à la place (ou aucun des deux), ils ont l'air bon en texte brut, mais ils ressemblent à ceci dans la base de données:
AE Ã", OE Ö, de l'UE Ãœ, ae ä oe ö ue ü

J'ai essayé des tonnes d'options pour les heures maintenant, mais je ne peux pas trouver une solution qui fonctionne. Jusqu'à présent, la seule option me semble que j'ai est d'avoir de ressembler à un désordre total dans la base de données, mais ce serait très contraproductive si ces ensembles de données doivent être modifiés.

Ne de votre dernière observation suggère que le problème est probablement avec la base de données (et peut-être PHP) plutôt qu'avec jQuery et AJAX?
J'ai essayé de changer ma base de données de l'encodage latin1, mais il n'y a pas de différence

OriginalL'auteur rayne | 2010-03-29