Laissez-moi vous expliquer la situation plus près.
ü, ä, ß
sont affichés mal, comme ceci: <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8">
J'ai lu une théorie sur l'enencoding de caractères, l'histoire de l'enencoding de caractères et l'UTF-8 tout-puissant qui résoudra tous vos problèmes, ce qui n'est tout simplement pas vrai. Quel pourrait être le problème?
Tout d'abord, identifiez les valeurs d'octets que vos caractères brisés ont exactement. Sans savoir que vous ne pouvez pas identifier l'enencoding comme à utiliser.
echo urlencode($ssortingng_with_umlauts);
Cela imprimera tous les caractères non ASCII sous forme de valeurs hexadécimales codées en pourcentage. Notez que cette fonction est destinée à d'autres fins, mais cela aidera également dans ce cas.
Puis searchz les octets dans les tables d'enencoding comme Wikipedia et soyez sûr de ce que vous avez là.
La dernière étape: Ajoutez une couche de transformation à votre logique d'access à la database qui convertit de l'enencoding que vous avez vu en UTF-8 avec les fonctions iconv.
Eh bien, j'ai trouvé la solution:
function decode($ssortingng){ $ssortingng = urlencode($ssortingng); $ssortingng = str_replace('%DF','ß',$ssortingng); $ssortingng = str_replace('%E4','ä',$ssortingng); $ssortingng = str_replace('%F6','ö',$ssortingng); $ssortingng = str_replace('%2B','+',$ssortingng); $ssortingng = str_replace('%FC','ü',$ssortingng); $ssortingng = str_replace('%26','&',$ssortingng); $ssortingng = str_replace('%2F','/',$ssortingng); $ssortingng = str_replace('%0A','',$ssortingng); $ssortingng = str_replace('%0D','',$ssortingng); $ssortingng = str_replace('%40','@',$ssortingng); $ssortingng = str_replace('%2C',',',$ssortingng); $ssortingng = str_replace('%E1','á',$ssortingng); $ssortingng = str_replace('%D3','ó',$ssortingng); $ssortingng = str_replace('+',' ',$ssortingng); return $ssortingng;
}
Mais n'y a-t-il pas de meilleure solution?