Visual Studio CodeでNodeJSのアプリを開発中に発生した文字化けに関する記事です。
NodeJSにて文字コードがShift-JISのDB2データベースのテーブルから、日本語を含むデータをSELECTすると文字化けが発生しました。
NodeJSはUTF8ですが、その情報がドライバに伝わらずコード変換が正しく行われていないようです。
そんな時はクライアント側の文字コードをprocess.env.DB2CODEPAGEに設定しましょう。
let ibm_db = require('ibm_db');
let settings = require('./settings');
// クライアント側の文字コード(UTF8)を明示しドライバにコードを変換させる
process.env.DB2CODEPAGE = 1208;
var db_str = "DATABASE=" + settings.db_name
+ ";HOSTNAME=" + settings.db_host
+ ";UID=" + settings.db_username
+ ";PWD=" + settings.db_password
+ ";PORT=" + settings.db_port
+ ";PROTOCOL=TCPIP;";
var sql = "select name from test";
ibm_db.open(db_str, function(err, conn) {
if(err) return console.log(err);
conn.query(sql, function(err, data) {
if(err) {
console.log(err);
} else {
for (let index = 0, max = data.length; index < max; index++) {
console.log(data[index].name);
}
}
conn.close(function() {
console.log('done.');
});
});
});
以上です。