Acento Em Template Flash
#1 apariciojunior
Posted 09/08/2006, 09:18
Comprei uns templates em flash que vieram com o seguinte arquivo fndnxi.txt, onde através dele é feito as configurações dos menus e dos dizeres da animação.
Ele veio como se segue abaixo:
name=Business.com&slogan=Company slogan goes here&slogan2=another short slogan goes here&rep=replay&button1=About the project&button2=Solutions&button3=Technology&button4=Careers&button5=Information&button6=Contacts&icon1=Home&icon2=Site map&icon3=Contact us&url1=#&url2=#&url3=#&url4=#&url5=#&url6=#&iurl1=#&iurl2=#&iurl3=#&enddata=1
Problema: Quando coloco palavras com acento neste arquivo, tais palavras ficam erradas na apresentação, ou seja, a apresentação não aceita acento nem "ç".
Tentei mudar a fonte do tal arquivo especificado acima (que era lucida console) e salvá-lo em UTF-8. Também não deu certo.
Gostaria de uma ajuda para saber como resolver tal problema.
#2
Posted 09/08/2006, 10:57
Acontece que consegui resolver parte dele.
No Internet Explorer funciona e no Firefox não.
Engraçado né? Chato demais estas incompatibilidades.
A diferença é que eu estou recuperando estas variáveis como requests(asp)
arquivo.swf?foto_titulo=Crianças no parque& ( crianças no parque )
Quando utilizo codificação ISO na página que carrega o flash, o texto funciona no IE mas não no firefox.
Quando utilizo codificação UTF-8 na página que carrega o flash, o texto não funciona em nenhum deles.
Você já tentou colocar os caracteres no EMBED?
Alguém já teve este problema de incompatibilidade e pode ajudar?
Edição feita por: NOVAZOO, 09/08/2006, 11:01.
#3
Posted 09/08/2006, 18:27
Experimentem:
onLoad () {
System.useCodepage=true;
}
#4
Posted 10/08/2006, 10:40
Oi, pessoas.
Experimentem:
onLoad () {
System.useCodepage=true;
}
Informações sobre acentuação no Flash
Para quem tem problema com isso, na leitura de dados e/ou na hora de gravar dados é importante lembrar que o Flash lê os dados em codificação UTF-8... Logo, você precisa usar no PHP a função utf8_encode e utf8_decode. Assim você evita esses caracteres estranhos quando criando XMLs via PHP com codificação ISO e tentando apresentar no Flash, o que causaria os típicos problemas de acentuação.
Um exemplo de como gerar o XML para o flash...
<?php require_once("../config.php"); $con_mural = mysql_query("********"); if( mysql_num_rows($con_mural) > 0 ) { echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n"; echo '<mural>' . "\n"; while( $row_mural = mysql_fetch_assoc($con_mural) ) { echo ' <recado>' . "\n"; echo ' <id>' . $row_mural['id'] . '</id>' . "\n"; echo ' <de>' . utf8_encode($row_mural['de']) . '</de>' . "\n"; echo ' <para>' . utf8_encode($row_mural['para']) . '</para>' . "\n"; echo ' <mensagem>' . utf8_encode($row_mural['mensagem']) . '</mensagem>' . "\n"; echo ' <data>' . utf8_encode($row_mural['horario']) . '</data>' . "\n"; echo ' </recado>' . "\n"; } echo '</mural>'; } ?>Desta forma o XML iria apresentar certinho no Flash, sem problema algum.
E pra salvar no Banco de dados, você salva usando decodificação UTF-8 porque o flash manda os dados EM UTF-8 também, ele lê e envia com essa codificação. Logo como disse, para gravar no banco de dados você faria algo parecido com o que isto:
<?php require_once("../config.php"); require_once("../functions.php"); // verifica magic quotes $de = utf8_decode(escape($_POST['de'])); $para = utf8_decode(escape($_POST['para'])); $mensagem = utf8_decode(escape($_POST['mensagem'])); $inserir = mysql_query("INSERT INTO mural_recados (de, para, mensagem, moderada, idioma) VALUES ('{$de}', '{$para}', '{$mensagem}', '0', '{$idioma}')"); } ?>
Por que NÃO usar o 'System.useCodepage=true' no Flash
O System.useCodepage=true no Flash pode parecer uma solução prática, rápida e eficiente, mas no final das contas você só está enganando a si mesmo, pois isto não resolve nada no nosso caso. Veja, quando você usa o System.useCodepage=true o Flash utiliza a condificação do Sistema Operacional rodando na máquina, então isso faz com que resolva nossos problemas de acentuação certo?! Errado! Se uma pessoa, por motivo de descuido ou não, possuir uma configuração diferente no Sistema Operacional isso já vai fazer com que os problemas de acentuação voltem a ocorrer. Os americanos utilizam codificação UTF-8 geralmente, se no flash estivesse com o System.useCodepage=true, e você estivesse mandando o flash ler um XML ou um texto com codificação ISO, para este americano (ou brasileiro com SO config. errado) a página abriria com os mesmos problemas de acentuação.
Este é o motivo de não se usar o System.useCodepage=true. Evite ao máximo e procure solucionar convertendo seus dados para UTF-8 e decodificando quando necessário.
Michel
#5
Posted 10/08/2006, 14:39
Já tentei setar toda a página como UTF-8 e ainda sim não consegui reoslver o problema no firefox. No internet Explorer funciona perfeitamente.
#6
Posted 10/08/2006, 17:18
Só salvar o .txt com codificação UTF-8 (ali em 'salvar como') resolve isso, então?
Eu testei aqui offline e funcionou, pelo menos.
#7
Posted 11/08/2006, 08:27
O sistema é em ASP e em ASP não há codificadao de string tipo "utf8_decode".
Já tentei setar toda a página como UTF-8 e ainda sim não consegui reoslver o problema no firefox. No internet Explorer funciona perfeitamente.
Hummm bom ai não sei, no PHP tem, ASP não entendo não
Michel
#8
Posted 29/12/2007, 09:29
O sistema é em ASP e em ASP não há codificadao de string tipo "utf8_decode".
Já tentei setar toda a página como UTF-8 e ainda sim não consegui reoslver o problema no firefox. No internet Explorer funciona perfeitamente.
Hummm bom ai não sei, no PHP tem, ASP não entendo não
Bem amigos, o codigo ASP abaixo funcionou comigo.
function DecodeUTF8(s) dim i dim c dim n i = 1 do while i <= len(s) c = asc(mid(s,i,1)) if c and &H80 then n = 1 do while i + n < len(s) if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then exit do end if n = n + 1 loop if n = 2 and ((c and &HE0) = &HC0) then c = asc(mid(s,i+1,1)) + &H40 * (c and &H01) else c = 191 end if s = left(s,i-1) + chr© + mid(s,i+n) end if i = i + 1 loop DecodeUTF8 = s end functionfunction EncodeUTF8(s) dim i dim c i = 1 do while i <= len(s) c = asc(mid(s,i,1)) if c >= &H80 then s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1) i = i + 1 end if i = i + 1 loop EncodeUTF8 = s end function
Abrçs!
Ps.: é meu 1º post.
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)