Ir para conteúdo
Fórum Script Brasil
  • 0

Acentos em string no FPDF


Rafael Spilki

Pergunta

Gurizada, to criando um fpdf, nesse fpdf tem uma string que leva acento, ex.:

palavra = "obrigatório"
Acontece que quando o pdf é criado essa string vem impressa em tela assim: obrigatório Já tentei também assim:
palavra= Server.HTMLEncode("!!!obrigatório!!!!")
e neste caso, fica impresso assim obrigat & # 195 ; & # 179 ; rio obs.: botei os espaços para não ser "interpretado"... Se a palavra obrigatório vem do bd através de rs, como era de se imaginar fica perfeito... só ocorre mesmo em string... Vale adiantar ainda (Antes que o Jonathan pergunte ;)) que o retorno de:
Response.Write(Server.HTMLEncode("á-é-ç-í-ó-ú"))
é igual a: á-é-ç-í-ó-ú e que também já tentei replaces do tipo:
palavra = replace(texto, "ó", Server.HTMLEncode("ó"))

Edit.: tb já tentei usar assim: obrigatório, mas responde no pdf exatamente igual!

Alguém tem alguma idéia?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

saiudhisaudha... bom na categoria de perguntas sem solução fiz a seguinte gambiarra para usar no meu concentrador de noticias aqui...

bom não e 100% mais resolve bastante...

o sistema fica coletando noticias de vários sites e depois joga na tela para seleção...

ai aparece os acentos toscos.... a unica coisa q resolveu foi:

function corrige(var)
corrige=replace(var,"é","é")
corrige=replace(corrige,"á","á")
corrige=replace(corrige,"â","â")
corrige=replace(corrige,"ê","ê")
corrige=replace(corrige,"ç","ç")
corrige=replace(corrige,"ú","ú")
corrige=replace(corrige,"ó","ó")
corrige=replace(corrige,"ã","ã")
corrige=replace(corrige,"É","É")
corrige=replace(corrige,"ü","ü")
corrige=replace(corrige,"Ã","Í")
corrige=replace(corrige,"ª","ª")
corrige=replace(corrige,"õ","õ")
corrige=replace(corrige,"õ","õ")
corrige=replace(corrige,"à ","à ")
corrige=replace(corrige,"ô","ô")
corrige=replace(corrige,"â€","""")
corrige=replace(corrige,"“","""")
corrige=replace(corrige,"Ãœ","Ü")
corrige=replace(corrige,"°","°")
corrige=replace(corrige,"Ã","Á")
corrige=replace(corrige,"ñ","não")
corrige=replace(corrige,"Ã","í")
end function

ai cada simbolo diferente vai adicionando... mais o í (Ã) tem q ficar sempre por ultimo.

Link para o comentário
Compartilhar em outros sites

  • 0

Não rolou velinho...

Tipo... já até resolvi essa parada... resolvi desiste e ao invés de string estou resgatando o texto do bd... tinha prazos... sabe como é... mas gostaria de descobrir como consertar essa bronca... certamente vou precisar novamente... e tb gostaria de alterar o script porque ficou meio gambiarristico!

Mas isso dae eu tb já tinha tentado... sei lá...

Já até abri um chamado pro povo do suporte do datacenter pra ver se rola uma luz!

Se rolar mais ideias posta aí...

valeu mesmo!

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza Bareta! valeu a força... acabei de mandar pro seu e-mail... mas não sei não... acho que possa ser algo particular aqui do datacenter que uso... to desconfiado disso, fiz uns testes em outro server e até mesmo local e rolou! Veja o que acontece aí...

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, boa tarde!

Após muitos esforços, pesquisas e contando com ajudas importantíssimas consegui resolver essa bronca!

Envolvidos:

* Bareta (moderador ASP Script Brasil)

* .Andreia. (Administradora Script Brasil)

* Joaquim Tito (Coordenador Webly) e que matou essa charada com uma velocidade indescritível!

Todos que usam FPDF em asp sabem que a documentação é meio que escassa principalmente no que compete a tutorias ou exemplos... se tratando em utilização com vbscript nem se fala!

Como não achava material em lugar nenhum fui consultar o faq do fpdf em php lá no fpdf.org (cito: http://www.fpdf.org/en/FAQ.php) que diz no item 7:

7. Accented characters are replaced by some strange characters like é.

Don't use UTF-8 encoding. Standard FPDF fonts use ISO-8859-1 or Windows-1252. It is possible to perform a conversion to ISO-8859-1 with utf8_decode():

$str = utf8_decode($str);

But some characters such as Euro won't be translated correctly. If the iconv extension is available, the right way to do it is the following:

$str = iconv('UTF-8', 'windows-1252', $str);

Só que essa função só se aplica ao php... no asp o jeito é converter a codficação para utf8...

Com essas informações o Tito me recomendou esse link: http://www.codetoad.com/asp_utf8.asp lá tem um script (abaixo segue completo) para encodificar e decodificar utf8... bem simples...

assim:

utf8.asp

<%
option explicit 

' Simple functions to convert the first 256 characters 
' of the Windows character set from and to UTF-8.

' Written by Hans Kalle for Fisz
' http://www.fisz.nl

'IsValidUTF8
'  Tells if the string is valid UTF-8 encoded
'Returns:
'  true (valid UTF-8)
'  false (invalid UTF-8 or not UTF-8 encoded string)
function IsValidUTF8(s)
  dim i
  dim c
  dim n

  IsValidUTF8 = false
  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
      select case n
      case 1
        exit function
      case 2
        if (c and &HE0) <> &HC0 then
          exit function
        end if
      case 3
        if (c and &HF0) <> &HE0 then
          exit function
        end if
      case 4
        if (c and &HF8) <> &HF0 then
          exit function
        end if
      case else
        exit function
      end select
      i = i + n
    else
      i = i + 1
    end if
  loop
  IsValidUTF8 = true 
end function

'DecodeUTF8
'  Decodes a UTF-8 string to the Windows character set
'  Non-convertable characters are replace by an upside
'  down question mark.
'Returns:
'  A Windows string
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(c) + mid(s,i+n)
    end if
    i = i + 1
  loop
  DecodeUTF8 = s 
end function

'EncodeUTF8
'  Encodes a Windows string in UTF-8
'Returns:
'  A UTF-8 encoded string
function 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
%>
para testar crie: utf8teste.asp
<!--#include file="utf8.asp"-->
<html>
<head>
<title>Test UTF encoding en decoding</title>
<head/>
<body>
<h1>Decoding</h1>
<p>Kopiëren ok: <%=DecodeUTF8("KopiÅ«ren")%></p>
<p>Kopiëren error: <%=DecodeUTF8("Kopiëren")%></p>
<p>Kopiëren error: <%=DecodeUTF8("KopiÅren")%></p>
<p>Kopiëren error: <%=DecodeUTF8("KopiÅ««ren")%></p>
<p>Kopiëren error: <%=DecodeUTF8("Kopià«ren")%></p>
<h1>Encoding</h1>
<p>Kopiëren UTF-8: <%=EncodeUTF8("Kopiëren")%></p>
<p>Kopiëren forth & back: <%=DecodeUTF8(EncodeUTF8("Kopiëren"))%></p>
<h1>Testing encoding</h1>
<p>Kopiëren: <%=IsValidUTF8("Kopiëren")%></p> 
<p>Kopiūren: <%=IsValidUTF8("Kopiūren")%></p> 
<p>KopiÅ««ren: <%=IsValidUTF8("KopiÅ««ren")%></p> 
<p>Aeroplane: <%=IsValidUTF8("Aeroplane")%></p> 
</body>
</html>

fucionou que foi uma beleza!

Meus agradecimentos a todos que participaram!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Olá gente, sou novo na área e tudo mais e estava aprendendo um pouco mais também, quando precisei de estar nessa pagina para tirar minha duvida...

Estava usando o Server.HtmlEncode(String) e tava dando o mesmo erro com acentos e essas coisas mais...

Mas por um acaso na hora que estava digitando denovo para ver se não nenhum erro assim, acabei descobrindo um jeito que até é facil é assim:

Server.HtmlDecode(String), na mesma hora debuguei e deu certo a var String que ia receber os valores, recebeu com os acentos e tudo mais...

Espero ter ajudado...

Muito Obrigado pela Atenção...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...