gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:02:11 25 4
gpt4 key购买 nike

所以我现在遇到了 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.');
}
})

*数据库表中将检索包含“åäö”的值的列定义为数据类型 nvarchar(50)

  • 我还尝试在变量 q 中使用 N'ö',这些字符(在双引号内)出现在数据库表“ᅢᄊ”中

*console.log('ö') 按预期在控制台中打印 ö

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

*数据库中的排序规则是 Finnish_Swedish_CI_AS

*我试图从另一个表中读出瑞典语 chrs,它通过包 msnodesqlv8 工作正常

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

最佳答案

您有没有使用预准备语句的原因?它负责为您编码,例如:

const sql = require('msnodesqlv8')
const connectionString = "server=YourServerIp,YourServerPort;Database=StackOverflow;Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0};"
console.log('Connecting...')
sql.open(connectionString, (err, conn) => {
console.log('Dropping...')
conn.query('drop table if exists [dbo].[Swedish]', (err,) => {
console.log('Creating...')
conn.query('create table [dbo].[Swedish] (testCol nvarchar(50))', (err) => {
console.log('Inserting...')
conn.prepare('insert [dbo].[Swedish] (testCol) values (?)', (err, ps) => {
ps.preparedQuery(['ö'], (err) => {
ps.free();
console.log('Selecting...')
conn.query('select * from [dbo].[Swedish]', (err, rows) => {
console.log(`${JSON.stringify(rows)}`)
})
})
})
})
})
})

哪个产量...

> node .\swedish.js        
Connecting...
Dropping...
Creating...
Inserting...
Selecting...
[{"testCol":"ö"}]

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

关于javascript - 从 javascript 到 mssql 的瑞典字符 - 在数据库表中显示为问号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63613885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com