再谈JS乱码解决之道2010年04月09日 17:21上次看到有关JS乱码解决方案,经试验有效。但部分页面仍做最后的抵抗,打死不愿意显出真身。经过百般搜索,调试。最终解决。现分享。
character_set_client 客户端字符集
character_set_connection 客户端与服务器端连接采用的字符集
character_set_results SELECT查询返回数据的字符集
character_set_database 数据库采用的字符集
乱码问题一般是由于以上几个变量设置错误照成的,所以只要理解这几个变量,就可以与告别乱码了。
使用上述变量,要理解这个核心思想: character_set_client,character_set_connection这两个变量保证要与 character_set_database编码的一致,而 character_set_results则保证与SELECT返回的结果与程序的编码一致。
我们可以在程序中使用 set names来同时设置character_set_client, character_set_connection, character_set_results这三个系统变量。
例如 set names 'utf8' 等同于 :
set @@character_set_client = 'utf8'
set @@character_set_connection = 'utf8'set @@character_set_results = 'utf8'一般情况下,当数据库与数据库表的字符集为utf8,我们再在程序里设置set names 'utf8'命令,这样就能保证无乱码了,但是,这里还要注意character_set_results变量的值,character_set_results的字符值是用来显示返回给用户的编码的。
例如,你的数据库(character_set_database)用的是utf8的字符集,那么你就要保证character_set_client,character_set_connection也是utf8的字符集。而你的程序也许采用的并不是utf8,比如你的程序用的是gbk,那么你若把character_set_results也设置为utf8的话就会出现乱码问题。此时你应该把character_set_results设置为gbk。这样就能保证数据库返回的结果与你的程序的编码一致。以下摘自网络的一程序段:
<?
//假设我们的程序采用的是utf8的字符集
$program_char = 'utf8';
//先检查mysql的版本号,如果版本号大于4我们才可以设置这些系统变量(mysql4还没有这些系统变量)
$version = current($db->fetch_one('SELECT VERSION()'));
if (substr($version, 0, 1) > 4)
{
//取出当前数据库的字符集
$sql = 'SELECT @@character_set_database';
$char = current($db->fetch_one($sql));
//将客户端字符集(character_set_client)和连接字符集(character_set_connection)设置为与数据库字符集(character_set_database)一致
$db->query('SET @@character_set_client = "' . $char . '"');
$db->query('SET @@character_set_connection = "' . $char . '"');
//将SELECT查询返回数据的字符集设置为与当前程序的字符集一致
$db->query('SET @@character_set_results = "' . $program_char . '"');
}
?>
1、要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致;
2、要保证通讯的字符集与数据库的字符集一致,即character_set_client, character_set_connection与character_set_database一致;
3、要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致;
4、要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?"/>一致。
总结:在mysql中用命令:select version(); //查看版本号
select @@character_set_client; select @@character_set_connection; select @@character_set_database;来分别查看三种编码;
若不同,则用set @@character_set_database='utf8'; ..来分别设置三个编码。也可直接在PHP中连接数据库函数mysql_connection()下一行用 set names utf8 来设置这三种编码的统一。
搜索返回的编码与程序文件使用编码要一致。其查询和设置方法同上。
备注:我写的一套PHP程序采用了模板技术,在所有模板页面头部上都加了如下代码:
<? header("content-type:text/html; 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" />
本以为会全部解决乱码问题,但未能如愿。仍有部分乱码,后来找到了原因,应该加在它的前一级的调用它的页面上。呵呵
[color=black][/color][size=large][/size]
分享到:
相关推荐
jsp中文乱码的处理 页面显示 表单提交 数据库操作JSP中文乱码处理
配置Filter过滤器处理JSP中文乱码 参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器conf目录里的Server.xml文件配置...
JSP中文乱码
JSP中文乱码问题的最优解决方法
JSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdfJSP中文乱码.pdf
大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。
JSP中文乱码解决集锦JSP中文乱码解决集锦JSP中文乱码解决集锦
servlet与jsp中文乱码处理,详细介绍多种乱码处理方法,包括使用过滤器的方法
这是我收集的最全的解决JSP中文乱码的文章了 其中前面几个万能解决方法是我归纳出来的,不要怕分多,因为我太缺分了,绝对值10分
JSP中文问题解决办法,JSP页面传值,数据库等的中文乱码解决办法
中文乱码是jsp动态网站开发中经常遇到的问题,该文从产生jsp中文乱码的范例消除乱码的具体方案,具有实用性和易操作性。
JSP中文乱码问题解决总结,个人收集,一次放出,减少大家的查找时间。
Tomcat环境下JSP中文乱码问题的解决
本文档详细地介绍了如何解决MySql数据库中的中文乱码问题,此问题的解决将极大地帮助基于MySql的PHP编程、JSP编程、Servlet编程及C#或.Net编程!测试过的开发平台包括 Netbeans和Eclipse。测试过的服务器包括Apache、...
本ppt内容主要是解决方案Eclipse 开发JSP中文乱码问题,为初学使用ECLIPSE开发JAVA WEB项目的人提供方便。
对常见中文乱码问题进行了详细介绍和解释,希望能给大家以帮助。
NULL 博文链接:https://itfinder.iteye.com/blog/1892381
jsp中文乱码 jsp mysql 乱码的解决方法.docx
JSP中文乱码的产生原因及解决方案,比较全面的解决中文乱码问题