Godaddy的Windows系列主机提供两个MS SQL Server 2005数据库,在插入或更新数据库时中文字符会出现乱码,解决方法及原因摘录如下:
<% '... title = "中文不乱码fufuok" set rs = Server.CreateObject("ADODB.RecordSet") sql = "SELECT * FROM tTable WHERE ID=0" rs.Open sql,conn,1,3 rs.AddNew rs("sTitle") = title rs.Update rs.Close set rs = nothing %>
我使用的是ASP程序,在插入或更新数据时如果使用上面这种方式,中文是可以正常写入和读取的。但是如果采用下面这样的方式来插入或更新数据时就会出现中文乱码,内容显示为问号:
<% '... title = "中文乱码fufuok" conn.Execute("INSERT INTO tTable (sTitle) VALUES ('"&title&"')") %>
<% '... title = "中文乱码fufuok" conn.Execute("UPDATE tTable SET sTitle = '"&title&"'") %>
解决方法是采用第一种方式来插入和更新数据,可以把插入和更新都写成函数或过程来调用也很方便,如果坚持用后面的方式来插入或更新的话,可以在包含中文的字符串入库前加上强制转换符 N 。
<% '... title = "中文乱码fufuok解决方法" conn.Execute("INSERT INTO tTable (sTitle) VALUES (N'"&title&"')") %>
<% '... title = "中文乱码fufuok解决方法" conn.Execute("UPDATE tTable SET sTitle = N'"&title&"'") %>
除此之外,Select 操作的时候也需要加上 N 来转换,比如在搜索的时候:
<% '... title = "搜索中文乱码解决方法" conn.Execute("SELECT TOP 500 * FROM tTable WHERE sTitle LIKE N'%"&title&"%'") %>
备注:N 表示后面的字串是unicode类型或字符常量编码方式强制转换为unicode编码,所有的字符都用16bit来存储。使不同语言(中/英)系统的数据不会产生乱码。
~~~
在读取数据的页面顶部最好加上下面这段,这是个习惯:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>另外在页面 head 部分也应该加上相应的代码:
<meta http-equiv="Content-Language" content="zh-cn" /> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
这样就不会再出现中文乱码的情况了,中文网站也能在Godaddy主机中很好地使用MSSQL2005数据库。
除此之外,ASP连接MSSQL 2005最好使用下列代码,而不要使用 Driver={SQL Server},备注字段取值时会有问题:
conn.Open "Provider=sqloledb; Data Source=dbxxxsql.db.12345.hostedresource.com; Initial Catalog=dbxxxsql; User ID=dbxxxsql; Password=xxxpwdxxx;"
上一篇:六一儿童节快乐 | 下一篇:2012年的全球灾难被证实
顶个、、、、、、、、、、
汗,还是不行