1
My problem: I have a Node application that sends messages to a specific Whatsapp (works normally, without character error). But when performing a query in the database (IBM DB2) and send this data to the customer this symbol appears: . If I convert to utf-8 this appears: � . These symbols appear exactly where they should be and accented vowels.
To connect to the database I use the ibm_db package: https://www.npmjs.com/package/ibm_db
Testing:
(1) - I checked the database charset by charset-detector, that was the return:
CharsetMatch {
confidence: 15,
charsetName: 'UTF-8',
lang: undefined
},
CharsetMatch { confidence: 10, charsetName: 'Shift_JIS', lang: 'ja' },
CharsetMatch { confidence: 10, charsetName: 'GB18030', lang: 'zh' },
CharsetMatch { confidence: 10, charsetName: 'EUC-JP', lang: 'ja' },
CharsetMatch { confidence: 10, charsetName: 'EUC-KR', lang: 'ko' },
CharsetMatch { confidence: 10, charsetName: 'Big5', lang: 'zh' }
] ```
**(2)** - Tentei codificar e decodificar utilizando os pacotes:
**a)** utf8:
```const utf8 = require('utf8')
const convertUTF8 = (value) =>{
value = value.toString()
value = utf8.encode(value)
return utf8.decode(value)
} // retorno � -> obs:tentei codificar e decodificar depois disso
```
**b)** Buffer nativo do Node:
```const convertUTF8 = (value) =>{
value = value.toString()
const buf = Buffer.from(value,'utf8')
return buf
} // retorno � obs:chutei -> Buffer.from(value,'latin1') também, mesmo erro. E também Buffer.from(value,'utf16le') sem sucesso
```
**c)** stringDecoder:
```const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');
const convertUTF8 = (value) =>{
value = value.toString()
return decoder.end(value)
}// retorno �
/*
fiz também assim:
const convertUTF8 = (value) =>{
value = value.toString()
const str = Buffer.from(value)
console.log(decoder.end(str))
return str
} tive o mesmo erro
*/
```
**d)** Usei também o encov, mas não tenho o código para mostrar. Seu resultado foi igual aos outros
**NOTA:** *Se eu criar uma string e enviar como mensagem para o usuário ele recebe normalmente, então acredito que esse erro esteja acontecendo entre o db2 e o node.*
Então já não sei o que fazer, procurei por diversas soluções e nenhuma me atendeu.
Disponibilizo meu repositório para análise: https://github.com/GilbertoTADS/botmaker-chat.git
**Nova Informação:** Fiz uma query no banco em que consultar os dados já retirava os acentos e troca o çÇ pelo cC. Mas o problema continua.
**QUERY CITADA(parte relevante) ->**
```const strQuery = `SELECT
[(..outros campos aqui...)],
LOWER(TRANSLATE(pv.DESCRICAOPRODUTO,
'SZszYACEIOUAEIOUAEIOUAOEUIONYaaceiouaeiouaeiouaoeuionyy Cc',
'ŠŽšžŸÁÇÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕËÜÏÖÑÝåáçéíóúàèìòùâêîôûãõëüïöñýÿºÇç')) AS DESCRICAOPRODUTO
FROM [(...continua...)]```
What is the codeset and collation of the database?
– Danizavtz
I use Dbeaver to connect to db2
– AssuntosDev Gilberto Carlos
@Danizavtz, how do I see my codeset?
– AssuntosDev Gilberto Carlos