Jump to content


Photo

Texto Dinâmico - Problema Com Acentuação


  • Faça o login para participar
3 replies to this topic

#1 Massa

Massa

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 11/08/2007, 20:44

Pessoal

Estou com o Seguinte problema:

Tenho um Script PHP que gera uma saída HTML , Nesta saída , temos um swf , que utilizará alguns textos passados como variaveis para o filme.

As variaveis são:
textobomdiasp=São Paulo, 10 de Agosto de 2007 , 08:08 - Horario de Brasília - BR
textobomdialocal=Sua localização - BRAZIL
textobomdiauser=Bom Dia Usuário <b>Fulano</b> - <i>Você não está Logado</i>

antes que me perguntem ,... sim ,...já tentei usar HTML ENTITES nas variaveis acima

as variaveis são passadas para o filme da seguinte maneira

<param name="movie" value="filme.swf?textobomdiasp=São Paulo, 10 de Agosto de 2007 , 08:08 - Horario de Brasília - BR&textobomdialocal=Sua localização - BRAZIL&textobomdiauser=Bom Dia Usuário <b>Fulano</b> - <i>Você não está Logado</i>" />

e

<embed src="filme.swf?textobomdiasp=São Paulo, 10 de Agosto de 2007 , 08:08 - Horario de Brasília - BR&textobomdialocal=Sua localização - BRAZIL&textobomdiauser=Bom Dia Usuário <b>Fulano</b> - <i>Você não está Logado</i>" quality="high" bgcolor="#ffffff" width="750" height="80" name="filme" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />

no primeiro frame do filme flash tenho:
System.useCodepage = true;
para validar caracteres de acentuação

até aí , tudo bem , ...acontece que no FF e no Safari , as acentuações estão com problema

Alguêm pode me ajudar ??

Segue codigo HTML gerado pelo PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Titulo</title>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="750" height="80" id="filme" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="filme.swf?textobomdiasp=São Paulo, 10 de Agosto de 2007 , 08:08 - Horario de Brasília - BR&textobomdialocal=Sua localização - BRAZIL&textobomdiauser=Bom Dia Usuário <b>Fulano</b> - <i>Você não está Logado</i>" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="filme.swf?textobomdiasp=São Paulo, 10 de Agosto de 2007 , 08:08 - Horario de Brasília - BR&textobomdialocal=Sua localização - BRAZIL&textobomdiauser=Bom Dia Usuário <b>Fulano</b> - <i>Você não está Logado</i>" quality="high" bgcolor="#ffffff" width="750" height="80" name="filme" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

Edição feita por: Massa, 11/08/2007, 20:47.


#2 Patrique

Patrique

    Super Veterano

  • Usuários
  • 1859 posts
  • Sexo:Não informado

Posted 11/08/2007, 22:32

Para resolver definitivamente o problema, se você ler atentamente o último parágrafo da documentação do Flash. Você vai saber o que fazer, mas caso não tenha lido, o parágrafo diz o seguinte:

"To ensure that users on all platforms can view external text files used in your SWF files, you should encode all external text files as Unicode and leave System.useCodepage set to false by default. This way, Flash Player 6 and later interprets the text as Unicode."

Isto quer dizer que, para garantir que TODAS as plataformas apresentem os textos e XMLs corretamente, você deve garantir que estes dados sejam fornecidos na codificação padrão do Flash, no caso, Unicode (UTF-8).

Para fazer isto com PHP é extremamente simples... basta utilizar duas funções nativas, o utf8_decode() e utf8_encode().

Imagine que você esteja fazendo o PHP gerar um XML para o Flash ler. Então você deve usar o utf8_encode() para que os dados sejam codificados em UTF-8, como no exemplo abaixo:
print('<mensagem>' . utf8_encode($variavel_mensagem) . '</mensagem>' );

Agora, se você precisa que o Flash envie os dados de um formulário para um e-mail ou para guardar em um banco de dados de tal forma que você tenha a possibilidade de ler e editar sem toda hora ter que codificar/decodificar, então você utilizaria o utf8_decode(), como o exemplo a seguir:
$mensagem = '<b>Mensagem: </b>' . utf8_decode($_POST['mensagem']) . "<br>";

para maiores informações clique no seguinte link: aqui

boa sorte

#3 Massa

Massa

    Turista

  • Usuários
  • 54 posts
  • Sexo:Não informado

Posted 12/08/2007, 13:17

Para resolver definitivamente o problema, se você ler atentamente o último parágrafo da documentação do Flash. Você vai saber o que fazer, mas caso não tenha lido, o parágrafo diz o seguinte:

"To ensure that users on all platforms can view external text files used in your SWF files, you should encode all external text files as Unicode and leave System.useCodepage set to false by default. This way, Flash Player 6 and later interprets the text as Unicode."

Isto quer dizer que, para garantir que TODAS as plataformas apresentem os textos e XMLs corretamente, você deve garantir que estes dados sejam fornecidos na codificação padrão do Flash, no caso, Unicode (UTF-8).

Para fazer isto com PHP é extremamente simples... basta utilizar duas funções nativas, o utf8_decode() e utf8_encode().

Imagine que você esteja fazendo o PHP gerar um XML para o Flash ler. Então você deve usar o utf8_encode() para que os dados sejam codificados em UTF-8, como no exemplo abaixo:
print('<mensagem>' . utf8_encode($variavel_mensagem) . '</mensagem>' );

Agora, se você precisa que o Flash envie os dados de um formulário para um e-mail ou para guardar em um banco de dados de tal forma que você tenha a possibilidade de ler e editar sem toda hora ter que codificar/decodificar, então você utilizaria o utf8_decode(), como o exemplo a seguir:
$mensagem = '<b>Mensagem: </b>' . utf8_decode($_POST['mensagem']) . "<br>";

para maiores informações clique no seguinte link: aqui

boa sorte


Valeu Patrique

Na verdade não manjo de Flash , nunca lí nenhum manual , ... apenas quebro o galho ... rs
Meu negócio é PHP

Para resolver o problema , na verdade além de aplicar o utf8_encode , tive que aplicar o urlencode no lado servidor , e o unescape() no filme , ao receber as variaveis , que na verdade foram passadas via "url" ao filme , e por este motivo o problema não era só de utf8.
a action System.useCodepage = true; foi retirada do filme conforme sugere o link do Patrique

pra quem quiser saber a solução:
no script php usei url encode e utf8 nas tags: embed , param name para formar a url que passara as variaveis ao filme
filme.swf?variavel=<?php echo urlencode(utf8_encode("São Paulo .....bla bla ç ã e qq. texto acentuado")); ?>

e no swf , para receber as variaveis , usei unescape
_global.texto = unescape(_level0.variavel);

Obrigado

Abs.
Massa

#4 Patrique

Patrique

    Super Veterano

  • Usuários
  • 1859 posts
  • Sexo:Não informado

Posted 12/08/2007, 14:21

HUum entendo Massa, é que para caso a uma solução, mais fico feliz por você ter conseguido resolver seu problema, na maioria dos casos aplicar um utf8_encode já basta mais como eu disse depende da programática.

[]'s
Patrique




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq