sql查询结果显示来自javascript的问号

时间:2015-03-11 16:22:02

标签: javascript sql sql-server

我在.asp文件中有js代码,连接到sql server,执行查询并响应查询的结果。 我插入了charset = "utf-8""Windows-1255",但它仍然没有用。 我的数据库排序规则是hebrew_ci_as,所有表格中的大部分数据都是希伯来语。

每当我尝试在Web或我的应用程序中使用一个Request.QueryString参数获取查询结果时,我会得到问号(????)而不是所有希伯来语字符串,英语很好并且整数很好。

我在windows server 2012 r2标准语中有希伯来语和英语,sql server 2008 r2iis 6.2包含所有更新。

THE JS CODE:

    Response.Expires        =   -1;
    Response.CharSet        =   "Windows-1255";


var user_id             =   new String(Request.QueryString("user_id"));
var strConnection       =   new String("PROVIDER=SQLOLEDB;Data Source=ABC;Initial Catalog=DEF;uid=GHI;pwd=JKL");
var query               =   new String("SELECT * FROM contact WHERE contact.identifier = '"+user_id+"'");

var cnn =   Server.CreateObject("ADODB.Connection");
var adClipString =  2;
        if(user_id.toLowerCase()!="undefined")
    {
        try
        {
            cnn.Open(strConnection);
            query=query.replace(/%user_id%/i,user_id);

            var returnVal   =   cnn.Execute(query).GetString(adClipString,-1,"@@@","","")

            Response.Write(returnVal)


        }
        catch(e)
        {
            Response.Write(e.message);
        }
        finally
        {
            if (cnn.State==1)cnn.Close();
            cnn=null;
        }
    };

结果:

@@@@@@03-1234567@@@ItzikE@@@?????@@@?????@@@59 ???? , ?? ???? - ???@@@?? ???? - ???@@@??? ???? ??????? ????@@@114@@@0@@@moital@@@moital@@@?????, ?????

所有希伯来语都是???,我在许多不同的环境和服务器中多次使用此代码,我总是通过utf-8格式在任何编辑器中保存文件本身来解决这个问题,例如 - {{ 1}},pspad ......它一直都有效。 这次是我真正尝试过的所有东西,并且不知道。 救命, 感谢。

2 个答案:

答案 0 :(得分:1)

替换此行

 new String("SELECT * FROM contact WHERE contact.identifier = '"+user_id+"'");

从中检查

 new String("SELECT * FROM contact WHERE contact.identifier = N'"+user_id+"'");
  

在SQL Server中处理Unicode字符串常量时,必须在所有Unicode字符串前面加上前缀N

参考:MSDN

答案 1 :(得分:0)

解决了 - 只是改变了时区LOL))