GB2312与UTF-8页面传递中文字符乱码的解决方案
发布时间:2013-07-04 08:29:24 访问次数:7676 【关闭此页】
在程序设计过程中,经常遇到不同编码页面间参数互相传递、以及读取不同编码数据库导致中文字符乱码的问题。在网上看到很多文章都是贴出一大串代码来转换接收到的字符,效率问题先放一边,单就成功率来说,就非常低。我一次也没试成功过。所以今天把我的方法贴出来与大家分享。
只写一例UTF-8页面提交表单到GB2312页面,大家可以举一反三。转换方法非常简单,请看代码:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <% option explicit response.buffer=true session.codePage=65001 response.charset="utf-8" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <form action="2.asp" method="post"><input name="k" type="text" /><input name="" type="submit" /></form> </body> </html>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><% option explicit response.buffer=true session.codePage=936 response.charset="gb2312" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> </head> <body> <% session.codePage=65001 dim k k=request.form("k") session.codePage=936 response.write(k) %> </body> </html>
综上,只要把接收页面的页面编码类型(session.codepage)临时更改为接收字符串的编码类型,然后把接收到的字符串赋值给变量,再把编码类型转回来,程序就会自动将字段转换成对应的编码类型。
对于数据库操作,方法相同,只需要把编码环境临时转换即可。