Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript到mssql的瑞典字符-在db表中显示为问号?_Javascript_Sql Server_Special Characters - Fatal编程技术网

从javascript到mssql的瑞典字符-在db表中显示为问号?

从javascript到mssql的瑞典字符-在db表中显示为问号?,javascript,sql-server,special-characters,Javascript,Sql Server,Special Characters,所以我现在有一个关于node js的奇怪问题,并且找不到任何解决方案 我正在尝试向我的mssql表中插入值,其中一些值包含瑞典语字符“åäö”。不管怎么说,当我这样做时,它们看起来像是“???????”。每个特殊字符显示为两个问号(“ö”->“??”) 一些细节: *我使用的包在js:msnodesqlv8中 var sql = require('msnodesqlv8'); const connectionString = "server=host;Database=MyDb;Tru

所以我现在有一个关于node js的奇怪问题,并且找不到任何解决方案

我正在尝试向我的mssql表中插入值,其中一些值包含瑞典语字符“åäö”。不管怎么说,当我这样做时,它们看起来像是“???????”。每个特殊字符显示为两个问号(“ö”->“??”)

一些细节:

*我使用的包在js:msnodesqlv8中

var sql = require('msnodesqlv8');
const connectionString = "server=host;Database=MyDb;Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0}"
q = "Insert into [MyDb].[dbo].[MyTable] (testCol) values ('ö')"

sql.query(connectionString, q, (err,data) => {
      if (err) {
           console.log(err);
      }
      else {
           console.log('Imported row to table.');
      }
})
*db表中检索包含“åäö”的值的列定义为数据类型nvarchar(50)

  • 我还在变量q中使用了带有Nö的trid,这些字符(在双引号中)出现在db table中“ᅢᄊ"
*log('ö')按预期在控制台中打印ö

*我已经尝试了js中可以想到的所有转换(例如utf-8、latin1等)

*db中的排序规则为芬兰语、瑞典语、CI AS

*我试着从另一个表读取瑞典语chr,它通过msnodesqlv8包工作得很好

var sql = require('msnodesqlv8');
const connectionString = "server=host;Database=MyDb;Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0}"
q = "Insert into [MyDb].[dbo].[MyTable] (testCol) values ('ö')"

sql.query(connectionString, q, (err,data) => {
      if (err) {
           console.log(err);
      }
      else {
           console.log('Imported row to table.');
      }
})

对我来说,问题似乎出在从js(这里一切看起来都很好)通过包msnodesqlv8发送查询时,以及mssql将解释这些值时。如果有人能帮助我,我非常高兴。

你为什么不使用预先准备好的语句?它会为你处理编码,例如:

const sql=require('msnodesqlv8')
const connectionString=“server=YourServerIp,YourServerPort;数据库=堆栈溢出;可信连接=是;驱动程序={SQL Server本机客户端11.0};"
console.log('正在连接…')
sql.open(connectionString,(err,conn)=>{
console.log('droping…'))
conn.query('drop table if exists[dbo].[Swedish]',(err,)=>{
console.log('Creating…'))
conn.query('create table[dbo].[Swedish](testCol nvarchar(50)),(err)=>{
console.log('插入…')
连接准备('插入[dbo].[Swedish](测试列)值(?),(err,ps)=>{
ps.preparedQuery(['ö'],(err)=>{
ps.free();
console.log('正在选择…')
conn.query('select*from[dbo].[Swedish]',(err,rows)=>{
log(`${JSON.stringify(rows)}`)
})
})
})
})
})
})
这就产生了

>节点。\swedish.js
连接。。。
滴水。。。
创建。。。
插入。。。
选择。。。
[{“testCol”:“ö”}]

通过SSMS查询时,会出现相同的字符。

显示您在此处使用的实际代码。
'因此,您可能正在使用不同的排序规则,或者在数据进入数据库之前发生了一些事情。我们需要一个here.Hi larnu。我编辑了我的帖子。感谢您的回答!:d考虑到您只使用了一个文本值,那么这就安全地建议表
dbo.MyTable中的列
testCol
e> 没有使用您认为的排序规则。您需要更改列
testCol
的排序规则,或者将其更改为
nvarchar
并使用
nvarchar
文字。我已经使用
nvarchar
作为列
testCol
的定义数据类型…如果它被定义为
nvarchar
,那么ss an
nvarchar