From b8346280feca57c355655931070dee1c1196a167 Mon Sep 17 00:00:00 2001 From: tiagocparra Date: Mon, 24 Jul 2017 16:42:55 +0100 Subject: [PATCH] Add database charset option on the Sybase constructor Databases can be set with a different collation than UTF-8. Problems with accented character may arise when using UTF-8 as an hardcoded encoding option on the stdout output of the driver. Undefined argument fallbacks to UTF-8 encoding. --- src/SybaseDB.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SybaseDB.js b/src/SybaseDB.js index 9820b2e..365c540 100644 --- a/src/SybaseDB.js +++ b/src/SybaseDB.js @@ -7,7 +7,7 @@ var fs = require("fs"); var PATH_TO_JAVA_BRIDGE1 = process.env.PWD + "/node_modules/sybase/JavaSybaseLink/dist/JavaSybaseLink.jar"; var PATH_TO_JAVA_BRIDGE2 = "./JavaSybaseLink/dist/JavaSybaseLink.jar"; -function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBridge) +function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBridge, dbCharset) { this.connected = false; this.host = host; @@ -16,6 +16,7 @@ function Sybase(host, port, dbname, username, password, logTiming, pathToJavaBri this.username = username; this.password = password; this.logTiming = (logTiming == true); + this.dbCharset = dbCharset || 'utf8'; this.pathToJavaBridge = pathToJavaBridge; if (this.pathToJavaBridge === undefined) @@ -49,7 +50,7 @@ Sybase.prototype.connect = function(callback) that.connected = true; // set up normal listeners. - that.javaDB.stdout.setEncoding('utf8').pipe(that.jsonParser).on("data", function(jsonMsg) { that.onSQLResponse.call(that, jsonMsg); }); + that.javaDB.stdout.setEncoding(that.dbCharset).pipe(that.jsonParser).on("data", function(jsonMsg) { that.onSQLResponse.call(that, jsonMsg); }); that.javaDB.stderr.on("data", function(err) { that.onSQLError.call(that, err); }); callback(null, data);