Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Rafael Spilki

Acentos em string no FPDF

Question

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

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 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.

Share this post


Link to post
Share on other sites
  • 0

Poisé... eu já até tinha tentado com replaces... mas pra mim não resolveu...

Não sei se entendi direito sua idéia... mas aplicando sua function o que retorna é isso aqui:

obrigatório, ou seja, a mesma coisa de antes...

mas valeu pela força!

Share this post


Link to post
Share on other sites
  • 0

kkkkk... e q o meu vem do xmlhttp...

tenta colocar uma meta tag ai...

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
  • 0

boa poe essa no tópico de funções lá em cima

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites
  • 0
Utilizei os exemplos do Rafael Spilki, mas não deram certo cmg. Estou penando com isso, poderiam me dá uma ajuda?

código?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148575
    • Total Posts
      644272
×
×
  • Create New...