postgresql trava gammu-smsd com erro de codificação

2

Estou usando o gammu-smsd no Ubuntu 12.04 como meu gateway sms. Ele varre informações do meu modem e as insere em um banco de dados postgresql. Aparentemente, ele tentou inserir algo na caixa de entrada com caracteres inválidos de acordo com / var / log / syslog:

 Oct 28 16:22:15 porkypig gammu-smsd[14936]: SQL failed: INSERT INTO inbox (ReceivingDateTime, Text, SenderNumber, Coding, SMSCNumber, UDH, Class, TextDecoded, RecipientID) VALUES ('2013-10-24 20:03:19', 'D83DDC4D','+13053057707','Unicode_No_Compression','+14044550007','','-1','<d83d><dc4d>','')
Oct 28 16:22:15 porkypig gammu-smsd[14936]: Error: ERROR:  invalid byte sequence for encoding "UTF8": 0xeda0bd#012HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
Oct 28 16:22:15 porkypig gammu-smsd[14936]: Query failed, checking connection 

Agora, quando tento iniciar o servidor gammu-smsd:

sudo /etc/init.d/gammu-smsd start

ele trava com a mesma saída no syslog que mostrei acima.

O que posso fazer para corrigir isso?

    
por JohnMerlino 28.10.2013 / 23:45

2 respostas

3

O Postgres já informou o que você pode fazer para corrigir isso:

Oct 28 16:22:15 porkypig gammu-smsd[14936]: Error: ERROR:  invalid byte sequence for encoding "UTF8": 0xeda0bd#012HINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".

invalid byte sequence for encoding "UTF8": 0xeda0bd#012
"Seu cliente ( gammu-smsd neste caso) me manda rabiscos. Eu não falo bobagens, eu falo utf-8."

This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
"Diga-me qual codificação seu cliente está usando, seja definindo a codificação do banco de dados (o que exigiria descartar e recriá-lo), ou fazendo com que seu cliente defina client_encoding apropriadamente."

Se você não souber qual codificação gammu-smsd está tentando usar, recrie o banco de dados com o SQL_ASCII encoding que basicamente diz ao Postgres para não se importar com o que você está passando.
Isso é uma desculpa, mas é uma solução rápida.

    
por 29.10.2013 / 17:27
1

O problema real aqui é que o gammu-smsd está tentando enviar o UTF-16 para o banco de dados UTF-8:

>>> str = '                                    
por 29.10.2013 / 17:52