日期:2014-05-16  浏览次数:21344 次

asp通过参数向sqlserver插入中文时出现乱码
Case "InsertCustomQuestion"

qQuestion = request("qQuestion")

strSql = "insert into t_Question(qQuestion) values ('" & qQuestion & "')"

conn.Execute (strSql)

Response.Write "OK"

qQuestion 字段是nvarchar类型,表、库排序都是Chinese_PRC_CI_AS,传值给qQuestion,只要是中文的,到了sql server里就是乱码,如“璐ф灦琚竻绌轰簡”,但是如果写成strSql = "insert into t_Question(qQuestion) values ('"中文"')",就正常。用C#的WinForm直接插入中文,也正常,就是用asp用参数写中文的时候会乱码。
------解决方案--------------------
可以尝试修改网页的编码格式,Response.Charset="gb2312",
或者你也可以去网页的meta 那里看看 编码格式是不是UTF-8 ,看情况 应该是传入的值存入变量时出了问题
------解决方案--------------------
检查文件的 格式 是 UTF-8 还是GBK 的

提交文件的 编码  和 提交后接收数据的 编码要一样, 用记事本打开 另存  最下面的编码选择 ANSI


------解决方案--------------------
乱码都是编码不统一造成的

记得要检查以下几个方面的编码是否统一:
一、服务端的编码声明,就是类似 <%@  CODEPAGE=936 %>这样的
二、客户端的编码声明,类似<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />这样的
三、文件属性的编码声明,用记事本的话,就另存为时选择编码,如果使用DW的话,就修改文档属性那里修改编码
四、数据库的编码
------解决方案--------------------
引用:
Quote: 引用:

检查文件的 格式 是 UTF-8 还是GBK 的

提交文件的 编码  和 提交后接收数据的 编码要一样, 用记事本打开 另存  最下面的编码选择 ANSI

这样操作后,还是乱码,Response.Write request("qQuestion") 出来就是乱码,奇怪。


加了meta指定utf-8编码,你的asp文件也要存储为utf-8编码的
------解决方案--------------------
三码合一,一数据库编码,二文件保存时编码,三ASP文件编码,三码合一就不会乱码了。
另外上面的服务端和客户端的编码是不统一的,65001对应utf-8,936对应gb2312,<%@ codepage=65001%>UTF-8 <%@ codepage=936%>简体中文 。
根据你的情况,建议全部改成gb2312。即
ASP文件使用<%@ codepage=936%>和<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />然后用记事本保存该文件,类型为ANSI
------解决方案--------------------
直接发源码过来看吧 275101203//qq

这样说也说不清楚
------解决方案--------------------
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