Ir para conteúdo
  • Cadastre-se

dev botao

json4delphi: Problema ao ler string com caracteres acentuados em notação Unicode


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 1652 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa noite.

Estou usando a jsons.pas, contida na pasta de Terceiros do ACBr, e me deparei com uma falha no tratamento de strings com caracteres com notação Unicode.

Recebi um json com a string abaixo:

   "produto_descricao":"M\u00e9dia 8 Peda\u00e7os"


   
Ao utilizar a classe TJson para ler este valor, o resultado obtido foi convertido para:

   JSon['produto_descricao'].AsString; // 'Mé#0dia 8 Pedaç#0os'

 

Ou seja, após os caracteres acentuados é inserido um byte 0, e ao atribuir para uma variável a string é truncada.

   sStr := JSon['produto_descricao'].AsString;   // 'Mé'

 

Consultei https://github.com/rilyu/json4delphi e verifiquei que existe uma versão mais recente, que corrige esta falha.
Baixei os fontes, fiz algumas adequações para o ACBr, compilei e testei com o Delphi 7 e Delphi XE6.

Estou disponibilizando em anexo os .pas atualizados da pasta ACBR\Fontes\Terceiros\json4delphi\src  para que sejam analisados e atualizados no repositório do ACBr.

Obrigado.
 

json4delphi-src.rar

  • Curtir 1
Postado
7 horas atrás, Juliomar Marchetti disse:

Precisei fazer alterações pois no Lazarus ocorreu problemas.

Favor atualizar e testar

Bom dia Juliomar.

Não uso o Lazarus, por isso não testei nele. Se alguém que usa o Lazarus puder testar, será bem-vindo.

Obrigado.

  • Moderadores
Postado
34 minutos atrás, Laercio Amici disse:

Bom dia Juliomar.

Não uso o Lazarus, por isso não testei nele. Se alguém que usa o Lazarus puder testar, será bem-vindo.

Obrigado.

Eu testei  e ficou ok. somente precisei mexer.

veja se o que mexi não interfere no delphi 7 ou outro

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado
3 horas atrás, Juliomar Marchetti disse:

Eu testei  e ficou ok. somente precisei mexer.

veja se o que mexi não interfere no delphi 7 ou outro

Ok, testei no D7 e XE6. Funcionou sem problemas.

Obrigado.

  • Curtir 2
  • Moderadores
Postado

Certeza que tu testou no Delphi 7 com o instalador?

14 horas atrás, Laercio Amici disse:

Consultei https://github.com/rilyu/json4delphi e verifiquei que existe uma versão mais recente, que corrige esta falha.
Baixei os fontes, fiz algumas adequações para o ACBr, compilei e testei com o Delphi 7 e Delphi XE6.

olhe

 

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado
15 minutos atrás, Juliomar Marchetti disse:

Certeza que tu testou no Delphi 7 com o instalador?

Sim, testei. No D7 funcionou perfeitamente, mas o @duardomribeiro usa o Delphi 2010, que não tenho aqui pra testar. O erro dele é o mesmo que eu estava tendo com o D7. Pesquisei no site da Embarcadero e havia encontrado referência ao record TFormatSettings a partir do Delphi 2009, e por isso incluí o {$IFDEF DELPHI2009_UP} na unit jsonsUtilsEx.pas.

Fiz uma nova busca, e encontrei este link, dizendo que a var FormatSettings  foi incluída no Delphi XE:
http://delphiprogrammingdiary.blogspot.com/2019/04/formatsettings-or-tformatsettings-in.html

Alterei a unit e troquei o ifdef anterior por {$IFDEF DELPHIXE_UP}, Compilei novamente com D7 e XE6, funcionou. Segue em anexo.

Desculpe pelo equívoco, não tenho outras versões do Delphi instaladas.

 

jsonsutilsEx.pas

  • Este tópico foi criado há 1652 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...