Node.js NodeJS mssql库向数据库插入奇怪的特殊字符
我尝试使用nodeJS中的mssql将记录插入表中。我的参数Node.js NodeJS mssql库向数据库插入奇怪的特殊字符,node.js,sql-server,express,Node.js,Sql Server,Express,我尝试使用nodeJS中的mssql将记录插入表中。我的参数product_code=“0123456789”是一个字符串。在插入表之前我检查了它,但是在运行查询之后,如果我将该字段格式化为varchar(30),则数据库中显示的记录是“?0123456789”。如果我将其重新格式化为nvarchar(30),它将显示为“ÿ0123456789”。 我不知道为什么只有这个参数才会发生这种情况。 我试图找出三个原因: 我的代码问题:我在tmux会话中使用vim。我尝试使用set list列出所有隐
product_code=“0123456789”
是一个字符串。在插入表之前我检查了它,但是在运行查询之后,如果我将该字段格式化为varchar(30),则数据库中显示的记录是“?0123456789”。如果我将其重新格式化为nvarchar(30),它将显示为“ÿ0123456789”。
我不知道为什么只有这个参数才会发生这种情况。
我试图找出三个原因:
set list列出所有隐藏字符;设置listchars=tab:→\ ,nbsp:␣,trail:•,eol:“”,在前面:«,扩展:»
但看不到任何奇怪的东西ssh
到我的后端服务器,启动tmux会话,并以文本编辑器的形式运行vim。我使用这种方法已经有几千个小时了,但我第一次遇到这个问题product\u code
来自哪里?打印出关于它的更多信息,console.log(product\u code.length)代码>,console.log(产品代码.charCodeAt(0))代码>如果product_code作为字符流中的第一个字段接收,我会检查对该流进行编码的任何内容-可能它是以UTF-8编码和BOM(字节顺序标记)发送的。谢谢,我得到了product_code.length=13
和product_code.charCodeAt(0)=65279
。我从req.body.product\u code
获得了product\u code
。非常感谢大家。非常感谢@hoangdv。我修复了我的代码并添加了验证器。我的product\u code
应该只包含数字,所以我添加了product\u code。替换(/[^0-9]/g,”)
@一直在学习是的,它被编码为UTF-8。现在我修剪了product\u code
,所以不再出现奇怪的字符。product\u code
来自哪里?打印出关于它的更多信息,console.log(product\u code.length)代码>,console.log(产品代码.charCodeAt(0))代码>如果product_code作为字符流中的第一个字段接收,我会检查对该流进行编码的任何内容-可能它是以UTF-8编码和BOM(字节顺序标记)发送的。谢谢,我得到了product_code.length=13
和product_code.charCodeAt(0)=65279
。我从req.body.product\u code
获得了product\u code
。非常感谢大家。非常感谢@hoangdv。我修复了我的代码并添加了验证器。我的product\u code
应该只包含数字,所以我添加了product\u code。替换(/[^0-9]/g,”)
@一直在学习是的,它被编码为UTF-8。现在我修剪了product\u code
,所以不再出现奇怪的字符。
let pool;
exports.DB = MSSQL;
exports.init = async function(){
const DB_HOST = process.env.DB_HOST;
const DB_USER = process.env.DB_USER;
const DB_PASS = process.env.DB_PASS;
const DB_DATABASE = process.env.DB_DATABASE;
const config = {
user: DB_USER,
password: DB_PASS,
server: DB_HOST,
database: DB_DATABASE,
options: {
//encrypt: true // Use this if you're on Windows Azure
}
}
console.log("DATABASE:");
console.log("Host: " + DB_HOST);
console.log("User: " + DB_USER);
console.log("Database: " + DB_DATABASE);
try{
pool = await MSSQL.connect(config);
}catch(error){
console.log("DATABASE: Failed to connect to SQL Server");
}
if(pool){
console.log("DATABASE: Connected");
}
}
exports.getPool = function(){
return pool;
}
myFunct = async function(product_code, other_param){
try {
console.log("product_code");
console.log(typeof product_code);
console.log(product_code);
const pool = MSSQL.getPool();
await pool.request().input('other_field', other_param).input('product_code', product_code).query("INSERT INTO my_database_table (product_code, other_field) VALUES(@product_code, @other_field);");
return {
result: true
}
} catch (error) {
console.trace(error);
console.log("myFunct: " + error);
return {
result: false,
error: ERROR.SYSTEM
}
}
}```