quinta-feira, 26 de junho de 2008

Transformar caracteres especiais em códigos

PORTUGUÊS
Algumas aplicações apresentam incompatibilidades em relação à codificação dos caracteres. O resultado disso são caracteres com codificação errada, como uma letra acentuada que não é mostrada corretamente.

Uma alternativa para isso é transformar o conjunto de caracteres específico em códigos. Como os códigos são globais, dificilmente ocorrerá problema com codificação errada.

A função em PHP[bb] abaixo substitui os caracteres especiais de um texto em seus respectivos códigos.

function acento2codigo($string)
{
$acento = array("¡", "¢", "£", "¥", "§", "¨", "©", "«", "¬", "®", "°", "±", "´", "µ", "¶", "·", "¸", "»", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ÿ", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "‹", "Œ", "‘", "’", "“", "”", "•", "–", "—", "˜", "™", "›", "œ", "Ÿ");
$codigo = array("¡", "¢", "£", "¥", "§", "¨", "©", "«", "¬", "®", "°", "±", "´", "µ", "¶", "·", "¸", "»", "¿", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "ß", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ÿ", "‚", "ƒ", "„", "…", "†", "‡", "ˆ", "‰", "‹", "Œ", "‘", "’", "“", "”", "•", "–", "—", "˜", "™", "›", "œ", "Ÿ");
return str_replace($acento, $codigo, $string);
}

ENGLISH
Change the special characteres to codes

Some aplications show an incompatibility with the characteres codification. The result of this are characteres with wrong codification, like a accented characteres that isn't showed correctly.

An option for this is change an specifically characteres set to codes. How the codes are global, will be difficult to happen problems with the wrong codification.

The PHP[bb] function above replace the special characteres in a text to their codes.