keywords: wap, wml, charset, encoding, utf-8, iso-8859-1, text input.
<?php
header("Content-type: text/vnd.wap.wml");
print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
print "<wml>\n";
print " <card title=\"Entrada de texto\">\n";
print " <p>\n";
print " Escreva seu texto aqui! <br/>\n";
print " <input name=\"texto\" size=\"17\" type=\"text\" maxlength=\"830\" /><br/>\n";
print " <anchor>Enviar<go href=\"submit_texto.pwml\" method=\"post\">\n";
print " <postfield name=\"texto\" value=\"$(texto)\" />\n";
print " </go>\n";
print " </anchor>\n";
print " </p>\n";
print " </card>\n";
print " </wml>\n";
?>
------
Qual o segredo do arquivo acima?!
Nao encontrei em site algum na internet a solucao para o problema q eu estava tendo, e apos descobrir a solucao, resolvi coloca-la aqui. O arquivo acima eh um arquivo em PHP q gera um arquivo WML(wap) onde existe uma caixa de entrada de texto e o conteudo dela eh passado por POST para o arquivo "submit_texto.pwml"..
Muitas pessoas adoram usar o recurso de previsibilidade de texto em seus celulares e a previsibilidade acaba inserindo os acentos corretamente nas palavras (obvio!). O problema eh q a os celulares utilizam o encoding UTF-8 nas suas fontes enquanto a maioria dos sites utiliza ISO-8859-1.
Para q exista uma interoperabilidade perfeita entre o servidor wap e o celular, os arquivos wml devem conter no cabecalho a definicao da versao do XML juntamente com a especificacao do encoding UTF-8.
------
<?php
header("Content-type: text/vnd.wap.wml");
print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
print "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">\n";
$texto = utf8_decode($texto);
//agora voce jah pode trabalhar com o texto..
$tam_texto = strlen($texto);
//e na hora de retorna-lo para o celular
//eh necessario codifica-lo novamente
print "<wml>\n";
print " <card title=\"Mostra o texto\">\n";
print " <p>\n";
print " Texto inserido: <br/>\n";
print " " . utf8_encode($texto) . "<br/>\n";
print " </p>\n";
print " </card>\n";
print "</wml>\n";
?>
------
Neste outro arquivo acima, o conteudo da variavel eh pego e decodificado para poder-se trabalhar em cima dele utilizando o PHP.
Se o programador quiser mostrar o conteudo novamente na tela do celular, este deverah ser codificado novamente para UTF-8.
Verifiquei diversos sites wap e, dentre eles, sites grandes como Terra, e UOL ignoram o problema..
Verifiquei nos foruns de desenvolvedores da Nokia e nao existe nenhuma resposta precisa sobre o assunto..

1 Comments:
esse lance de encodings e' chato. Latin1, western, kanji, etc... ad infinitum... UTF-8 seria uma otima solucao se nao tivesse ignorado, no inicio, o significado generalizado desse tal latim. data venia! PLZDA.
Postar um comentário
<< Home