Campo textarea insere caracteres estranhos no banco de dados

7 respostas
D

Olá,

olha eu de novo.

Desta vez, estou com problemas (este sempre foi um problema que não consigo resolver) ao enviar caracteres do textarea de um formulário, por exemplo, ao banco de dados.

Sempre que o usuário pula uma linha, insere um caracter não reconhecido pelo banco.

Devo modificar a codificação do banco? será preciso fazer isso? (está no padrão - latin1).

Para mostrar melhor o problema, segue uma imagem:

Já tentei mudar a variável para TEXT mas não resolveu.
E só acontece isso quando ele dá um enter ou tab.

Poderiam me dar uma forcinha?

[]s

7 Respostas

N

mas quando vc recupera o valor do banco para mostrar no view ele apresenta estes caracteres estranhos?

esse caractere que vc mostrou na imagem representa quebra de linha mas provavelmente o SW que está utilizando para vizualizar os dados da base de dados está te mostrando que tem uma quebra de linha, creio que quando vc recuperar o dado da base para um String isso ai vai virar um \n.

oq vc pode fazer como teste é antes de gravar na base mandar logar no console por exemplo o valor da caixa, provavelmente ele vai mostrar direitinho com quebra de linha.

D

Então deve mostrar na aplicação com um \n ou \t mesmo, mas não estou utlilizando o out.println, então é por isso que nem chega a recuperar os valores com estes caracteres.

Eu também insiro por PreparedStatement, então uso setObject, o que deveria inserir os caracteres normalmente.

Também mudei a codificação das duas páginas, a que envia e a que recebe o form mas não resolveu.

D

E como posso fazer isso?

Já tentei pegar os dados convertendo a codificação do banco mas não deu certo.

Então como tenho que fazer ?

[]s

D

É… agora uma porção bem grande…

Justo nas quebra de linhas.

Isso impede que os dados sejam recuperados pela aplicação =/

Não sei como resolver…

D

Percebi como os dados eram recuperados.
Bom, a quebra de linha sempre vai ficar assim no banco de dados, pois até mesmo o software que uso pra programar, (RJ TextEdit) usa símbolos para quebra de linha.

Então o problema está ao recuperá-los.

Deixa eu explicar melhor como o problema acontece:

Na verdade no textarea está tudo bem, acontece que eu uso um editor de textos na aplicação, onde ele é em javascript.

Já troquei de editor umas 5 vezes e todos possuem este problema ao receber estes dados do banco com quebra.

Texto retornado

Editando em um textarea - seria impossível um usuário
que não entenda de html editar assim

Então resolvi colocar javascript de editores mas…

E descobri o porque disso:

peguei o código fonte da página já processada pelo browser (html) e vi que dentor do editor, o texto ssía da linha:

var editor1 = new EDITOR();
editor1.create('

Digite seu texto aqui…

Digite seu texto aqui.... Digite seu texto aqui.... Digite seu texto aqui.... Dig [b]');[/b]

Alguém que usa editores em javascript para acessar banco de dados, poderiam me ajudar?

obrigado.

[]s

L

Deixa eu ver se eu entendi:

Um usuário usa uma interface gráfica para inserir dados textuais num banco de dados. Quando esse usuário aperta TAB ou ENTER, é inserido no database caracteres não alfa-numéricos, e isso está te incomodando.

Bem, algo assim já aconteceu comigo: quando eu ia ver no banco o que havia sido inserido, existiam caracteres estranhos em letras acentuadas ou no lugar dos “ç”. No entanto, quando a minha aplicação recuperava os dados do banco, esses caracteres estavam normais novamente. Quando eu dava um jeito de eles ficarem normais no banco, eles ficavam esquisitos na aplicação.

Talvez algo semelhante esteja acontecendo com você. Observe se os caracteres voltam ao normal quando a aplicação os recupera do banco de dados.

Caso isso não aconteça, ainda existe uma solução mais “gambiarrística”: use um método da classe String que substitua os caracteres esquisitos pelos desejados. Assim, para cada String lida do banco de dados, você pode substituir aquele caractere esquisito pelo ‘\n’ e o outro pelo ‘\t’.

Pesquise na documentação API java sobre a classe String. Estou certo de que ela tem um método que substitui caracteres.

Espero ter sido de ajuda. Boa sorte.

L

Experimente pra ver. Creio que irá pular a linha e dar a tabulação, mesmo que você não esteja usando out.println.

Esse tipo de problema não deve existir, muita gente usa Java e banco de dados, inclusive inserindo dados textuais onde linhas são saltadas.
Você deve estar perto da solução, só precisa procurar melhor - quem sabe exemplos?

Boa sorte! :slight_smile:

Criado 16 de dezembro de 2008
Ultima resposta 16 de dez. de 2008
Respostas 7
Participantes 3