New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Russian chars does not work in queries with ucs2. #138
Conversation
When i remove 'ucs2', queries goes properly. I am connecting to TDS7.2 MSSQL(windows machine)
Could you please post some code snippet? I have no problem with russian characters at all. |
base collation = SQL_Latin1_General_CP1251_CI_AS var findStr="ТЮМ"; Request return 0 rows result |
Could you please post a Tedious code? At least I need to see how you specify parameters in your requests. |
var crypto = require('crypto');
var thunky = require('thunky');
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var sameTime = require('../small-node-libs/sameTime.js');
var iconv = require('iconv-lite');
//....
var processRow=function(r,columns){
columns.forEach(function(column) {
if (typeof(column.value)=='string')
r[column.metadata.colName]=iconv.decode(new Buffer(column.value, 'binary'),'win1251');//win1251toUtf8.convert().toString();
else
r[column.metadata.colName]=column.value;
});
return r;
}
//....
var sConfig={
server: '192.168.0.232',
//port: 1433,
userName: 'xxxx',
password: 'xxxxxxxx'
};
//....
var queryLikeAMongoDb=function(qSql,mcb){
var connection;
connectionsLimit.run(function(){
connection = new Connection(cConfig);
connection.on('connect', function(connectionErr) {
if (connectionErr) {
console.log("db connect error",connectionErr);
return mcb(connectionErr);
}
var request = new Request(qSql, function(queryErr, rowCount) {
//Request ended
connection.close();
connectionsLimit.e();
mcb(queryErr,null);
});//create request
request.on('row', function(columns) {
var r=processRow({},columns);
mcb(null,r);
});
connection.execSql(request);
return null;
});//open connection to db
});//run connect under limit
};//queryLikeAMongoDb
var findStr="РОССИЯ";
var sql="SELECT TOP 15 * FROM OMS_COUNTRY WHERE UPPER(NAME) LIKE '"+findStr+"%'";
queryLikeAMongoDb(sql,function(err,row){
//This callback calls one time, without error.
//When i remove "ucs2" from buffer.writeString(parameter.value.toString(), 'ucs2')
//callback called 2 times. first with row-Russia, second without row and error.
}); |
Sill I can't reproduce the issue. Could you please run this code in your environment and post results here? It should print a lot of debug messages to the console. Thank you. var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = {
server: '192.168.0.232',
userName: '...',
password: '...',
options: {
debug: {
packet: true,
data: true,
payload: true,
token: true,
log: true
}
}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
request = new Request("SELECT TOP 15 * FROM OMS_COUNTRY WHERE UPPER(NAME) LIKE 'РОССИЯ%'", function(err, rowCount) {
if (err) {
console.error(err);
} else {
console.log('done');
}
connection.close();
});
connection.execSql(request);
});
connection.on('debug', function(text) {
console.log(text);
});
`` |
Mmmm, i can't understand, but now query goes right with one row... In my code also goes properly. I returned back 'ucs2', then run your code, then run my code, and i can't understand why..
|
I missed one thing in your code... I believe the problem is that you're calling you |
I am processing rows, and finish in one place(mcb), like a -->
|
I'am out of ideas here, I'am quite sure changing the |
When i remove 'ucs2', queries goes properly. I am connecting to TDS7.2 MSSQL(windows machine)