2010-04-05 7 views
10

Existe-t-il une fonction php pour gérer les codages ci-dessous?Fonction PHP pour convertir unicode en caractères spéciaux?

.replaceAll("\u00c3\u0080", "À") 
    .replaceAll("\u00c3\u0081", "Á") 
    .replaceAll("\u00c3\u0082", "Â") 
    .replaceAll("\u00c3\u0083", "Ã") 
    .replaceAll("\u00c3\u0084", "Ä") 
    .replaceAll("\u00c3\u0085", "Å") 
    .replaceAll("\u00c3\u0086", "Æ") 
    .replaceAll("\u00c3\u00a0", "à") 
    .replaceAll("\u00c3\u00a1", "á") 
    .replaceAll("\u00c3\u00a2", "â") 
    .replaceAll("\u00c3\u00a3", "ã") 
    .replaceAll("\u00c3\u00a4", "ä") 
    .replaceAll("\u00c3\u00a5", "å") 
    .replaceAll("\u00c3\u00a6", "æ") 
    .replaceAll("\u00c3\u0087", "Ç") 
    .replaceAll("\u00c3\u00a7", "ç") 
    .replaceAll("\u00c3\u0090", "Ð") 
    .replaceAll("\u00c3\u00b0", "ð") 
    .replaceAll("\u00c3\u0088", "È") 
    .replaceAll("\u00c3\u0089", "É") 
    .replaceAll("\u00c3\u008a", "Ê") 
    .replaceAll("\u00c3\u008b", "Ë") 
    .replaceAll("\u00c3\u00a8", "è") 
    .replaceAll("\u00c3\u00a9", "é") 
    .replaceAll("\u00c3\u00aa", "ê") 
    .replaceAll("\u00c3\u00ab", "ë") 
    .replaceAll("\u00c3\u008c", "Ì") 
    .replaceAll("\u00c3\u008d", "Í") 
    .replaceAll("\u00c3\u008e", "Î") 
    .replaceAll("\u00c3\u008f", "Ï") 
    .replaceAll("\u00c3\u00ac", "ì") 
    .replaceAll("\u00c3\u00ad", "í") 
    .replaceAll("\u00c3\u00ae", "î") 
    .replaceAll("\u00c3\u00af", "ï") 
    .replaceAll("\u00c3\u0091", "Ñ") 
    .replaceAll("\u00c3\u00b1", "ñ") 
    .replaceAll("\u00c3\u0092", "Ò") 
    .replaceAll("\u00c3\u0093", "Ó") 
    .replaceAll("\u00c3\u0094", "Ô") 
    .replaceAll("\u00c3\u0095", "Õ") 
    .replaceAll("\u00c3\u0096", "Ö") 
    .replaceAll("\u00c3\u0098", "Ø") 
    .replaceAll("\u00c5\u0092", "Œ") 
    .replaceAll("\u00c3\u00b2", "ò") 
    .replaceAll("\u00c3\u00b3", "ó") 
    .replaceAll("\u00c3\u00b4", "ô") 
    .replaceAll("\u00c3\u00b5", "õ") 
    .replaceAll("\u00c3\u00b6", "ö") 
    .replaceAll("\u00c3\u00b8", "ø") 
    .replaceAll("\u00c5\u0093", "œ") 
    .replaceAll("\u00c3\u0099", "Ù") 
    .replaceAll("\u00c3\u009a", "Ú") 
    .replaceAll("\u00c3\u009b", "Û") 
    .replaceAll("\u00c3\u009c", "Ü") 
    .replaceAll("\u00c3\u00b9", "ù") 
    .replaceAll("\u00c3\u00ba", "ú") 
    .replaceAll("\u00c3\u00bb", "û") 
    .replaceAll("\u00c3\u00bc", "ü") 
    .replaceAll("\u00c3\u009d", "Ý") 
    .replaceAll("\u00c5\u00b8", "Ÿ") 
    .replaceAll("\u00c3\u00bd", "ý") 
    .replaceAll("\u00c3\u00bf", "ÿ"); 

Répondre

14

Essayez mb_convert_encoding() le "à" encoding comme 'HTML-ENTITIES', et (le cas échéant) le "de" un encodage 'UTF-8' ou selon le codage Unicode que vous utilisez.

+0

Works, merci! – rawrrrrrrrr

+1

En php6, il n'y aura plus besoin de MultiByte (mb). – confiq

2

Utilisez strtr, c'est flamboyant rapidement.

+0

Ne fonctionne pas, car les entités html sont des caractères multiples, et 'strtr()' ne fait que des mappages de caractères 1: 1. – Amber

+1

C'est incorrect, il peut fonctionner sur les paires clé-> valeur d'un tableau (en remplaçant chaque occurrence de 'clé' par 'valeur'), ​​où vous pouvez remplacer les chaînes multi-caractères. – soulmerge

2

Je trouve cela intéressant, où la réponse précédente ne fonctionnait pas:

function jsonRemoveUnicodeSequences($struct) { 
    return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct)); 
} 

je l'ai trouvé ici: http://www.avoid.org/replace-u-characters-in-json-string/

Questions connexes