Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
Node.js NodeJS mssql库向数据库插入奇怪的特殊字符_Node.js_Sql Server_Express - Fatal编程技术网

Node.js 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列出所有隐

我尝试使用nodeJS中的mssql将记录插入表中。我的参数
product_code=“0123456789”
是一个字符串。在插入表之前我检查了它,但是在运行查询之后,如果我将该字段格式化为varchar(30),则数据库中显示的记录是“?0123456789”。如果我将其重新格式化为nvarchar(30),它将显示为“ÿ0123456789”。 我不知道为什么只有这个参数才会发生这种情况。 我试图找出三个原因:

  • 我的代码问题:我在tmux会话中使用vim。我尝试使用
    set list列出所有隐藏字符;设置listchars=tab:→\ ,nbsp:␣,trail:•,eol:“”,在前面:«,扩展:»
    但看不到任何奇怪的东西
  • 我的数据库服务器问题:这个问题以前从未发生过,我对数据库服务器一无所知,也没有专业知识来弄清楚它会发生什么。我们使用远程数据库服务器,它在Windows server上运行Microsoft SQL。如果你有一些线索,请建议我一些关键字谷歌它
  • 我的网络问题:我的Debian 10操作系统是否可能有病毒?我
    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
            }
        }
    }```