Sql Server参数化查询 插入,中文乱码

发布于 2022-09-06 01:33:14 字数 563 浏览 23 评论 0

使用参数化查询插入数据时,偶尔会插入中文为乱码(概率1%)的数据,代码如下:

...
cmd.CommandText = "insert into tablename (colnumn1,colnumn2) values(@param1,@param2)";
cmd.Parameters.Add("@param1", SqlDbType.NVarChar).Value = "some chinese words";
cmd.Parameters.Add("@param1", SqlDbType.NVarChar).Value = "some chinese words";
...

百度如何消除中文乱码时,查到一种解决方法,就是加N,如:

... values(N'some chinese word') 

但是,如果我结合参数化查询,这样的写的话:

... values(N@param1) 

会报错:Invalid column name 'N@brand'.
请问应该如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

来世叙缘 2022-09-13 01:33:14

cmd.Parameters.Add("@param1", "some chinese words");
可以直接这样写啊。我这样写没有遇到过中文乱码哎

残花月 2022-09-13 01:33:14
Function UrlDecode_GBToUtf8(ByVal str)
    Dim B,ub    ''中文字的Unicode码(2字节)
    Dim UtfB    ''Utf-8单个字节
    Dim UtfB1, UtfB2, UtfB3 ''Utf-8码的三个字节
    Dim i, n, s
    n=0
    ub=0
    For i = 1 To Len(str)
        B=Mid(str, i, 1)
        Select Case B
            Case "+"
                s=s & " "
            Case "%"
                ub=Mid(str, i + 1, 2)
                UtfB = CInt("&H" & ub)
                If UtfB<128 Then
                    i=i+2
                    s=s & ChrW(UtfB)
                Else
                    UtfB1=(UtfB And &H0F) * &H1000    ''取第1个Utf-8字节的二进制后4位
                    UtfB2=(CInt("&H" & Mid(str, i + 4, 2)) And &H3F) * &H40        ''取第2个Utf-8字节的二进制后6位
                    UtfB3=CInt("&H" & Mid(str, i + 7, 2)) And &H3F        ''取第3个Utf-8字节的二进制后6位
                    s=s & ChrW(UtfB1 Or UtfB2 Or UtfB3)
                    i=i+8
                End If
            Case Else    ''Ascii码
                s=s & B
        End Select
    Next
    UrlDecode_GBToUtf8 = s
End Function
 
response.write UrlDecode_GBToUtf8("%E6%96%B0%E5%85%B4%E7%BD%91%E7%BB%9C")

--给这个函数给你.看能不能用得到.转编码.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文