CRON está mudando a codificação?

6

Eu tenho um programa Java legado que gera um script SQL. Em seguida, uso o Apache Derby para executar esse SQL no banco de dados de destino (que não está no mesmo servidor que o CRON).

Quando executado via putty, isso funciona bem. Quando executado no windows isso funciona bem. Quando executado usando o CRON, o Derby lê os sinais como.

Se eu olhar o script sql gerado (usando VI), ele contém os sinais £. Se eu verificar o banco de dados, no entanto, ele contém?.

Por que rodar isso no CRON faz o programa se comportar de maneira diferente?

    
por Codemwnci 27.10.2010 / 09:50

2 respostas

5

Parece que o CRON foi o problema. Quando o programa Java foi executado e gerou os resultados para o arquivo, ele não pôde ser escrito corretamente. O arquivo SQL que eu estava lendo estava apontando para uma versão errada.

Para resolver o problema, adicionei o seguinte código próximo ao topo do script CRON

export LANG = en_US.UTF-8

Isso garantiu que o sinal £ fosse formatado corretamente.

    
por Codemwnci 27.10.2010 / 22:50
1

para mim, as soluções mencionadas não estavam funcionando. outra solução que li foi definir

"LANG = en_US.UTF-8" no arquivo "/ etc / environment".

Mas não estava funcionando nem.

O que estava funcionando para mim foi abrir o arquivo crontab com

crontab -e

e definido no começo:

LANG=de_DE.UTF-8
LANGUAGE=de
LC_CTYPE=de_DE.UTF-8
PYTHONIOENCODING=utf8

que também define a variável de ambiente.

Isso deve ser feito com todos os usuários que você deseja executar essas variáveis. Para executar root "sudo -s" antes de entrar no crontab.

    
por snickers2k 08.04.2015 / 05:16