乱码问题,解决办法不一定是”统一所有编码”
来源:互联网 发布:淘宝升钻有什么好处 编辑:程序博客网 时间:2024/06/10 18:15
2017.5.28
笔者在论坛上看到过这样的帖子,引用一下原文:
“
看到乱码,一般不想回答,因为问这个问题的人太多了,但是还是忍不住说几句吧。
1. 项目决定用 UTF-8
2. 程序的源码要用 UTF-8(Java,HTML)
3. HTML 的 meta 里要指定用 UTF-8
4. 数据库用 UTF-8
5. 数据库和 Java 的连接用 UTF-8
6. Tomcat 的 Get 设置为用 UTF-8
其他的暂时想不起来的,只有这些都用了 UTF-8,那么才不会出现乱码,如果中间有某一个没有使用 UTF-8,都有可能会遇到乱码。
”
笔者虽见识肤浅,但对以上观点深不以为然。之所以很多人强调编码一致,其实是为了避免转码错误的风险,这是一种很保险的做法。个人认为,并不是说必须编码一致,才能保证不出现编码乱码的问题。其实,未必要全部用utf-8或者全部用gb18030。下面请听笔者婉婉道来。
笔者在设计自己的bbs的时候,就遇到了一个问题。
---------------乱码问题详述,可跳过--------------------------------------------------
我想实现一个功能:注册的时候,鼠标离开文本框,用JavaScript的函数检查文本框内容的长度以及是否为空,并根据函数返回的结果,提示用户进行操作。这个提示用户进行操作的元素是一个id=“pwdv”的span元素,JavaScript里面写的语句是:document.getElementById("pwdv").innerHTML="密码不能少于六位";
我发现,只有当pageEncoding为utf-8的时候,这个span元素显示的中文文本才能正确显示。(可能和innerHTML默认编码为utf-8有关)。所以我果断把pageEncoding设置成了utf-8。
--------------------------------------------------------------------------------------------------
那么,问题来了。当我插入注册信息到数据库的时候,数据库是乱码的,于是我在后台打印出了数据,发现也是乱码的,也就是说,编码为utf-8的页面传递表单给编码为gb18030的页面时,出现了乱码。(为帮助理解下文的解决方法,请记住这句话,是从utf-8页面传到GB18030页面)而我的数据库编码是gb18030,我的java连接数据库编码也是gb18030,难道我要为了这个javaScript能正常运行而改变我其他的所有编码吗?!除了统一编码,还有其他可能吗?
这个时候我开始了各种尝试。
第一种方法。是把传递过来的参数重新编码成gb18030,假设传递过来的参数叫做insert_name。
insert_name=new String(insert_name.getBytes("utf-8"),"GB18030");
结果:依然乱码,之前的乱码是“濂�”,现在是“ç·”。
QWQ,不要放弃,再来。有一种坚强叫“第二种方法”。(强行文艺)
第二种方法。在编码为gb18030的页面,告知编译器,传递参数的页面是用的utf-8。我只用了一条语句:
request.setCharacterEncoding("utf-8");
结果:问题轻松解决。这个时候,无论后台还是数据库,都没有乱码,而且,最重要的是,一个页面是用的utf-8,另一个页面是用的gb18030 !这说明并不一定要统一编码才能解决乱码问题,只要跟编译器说清楚,你每个页面是用的什么编码就行了!
最后,感谢围观~
希望有所帮助~
- 乱码问题,解决办法不一定是”统一所有编码”
- 解决中文乱码问题,三处位置编码必须统一
- 【MySQL】统一控制台-pma-PHP编码!解决中文乱码问题
- PHPExcel系列之一:编码不统一,乱码问题
- 编码格式不统一造成的乱码问题
- 中文乱码(编码解码)问题的解决办法
- JAVAIO编码的乱码问题和解决办法
- iframe编码统一问题
- 编码不统一问题
- SharpMap中文乱码是因为编码问题
- (乱码问题大都是由于工具之间的编码格式不统一)Oracle字符集的查看查询和Oracle字符集的设置修改
- mysql和myelipse乱码解决办法-----推荐统一编码格式保持良好习惯
- web编码问题 有乱码 应统一编码 设置一个filter
- 电脑花屏不一定是显卡问题
- jsp_ajax乱码,注意编码方式的统一
- tomcat服务器乱码问题,tomcat与数据库之间的编码统一转换
- 编码不统一造成的乱码问题(客户端,服务器端。。网页,浏览器)
- 中文乱码(编码解码)问题的解决办法【转】
- Android编程红外编程——红外码详析
- MySQL索引原理及慢查询优化
- Linux总结笔记4-网卡配置及双网卡绑定
- UESTC 1646 穷且益坚, 不坠青云之志。 差分约束、Fellman-ford
- PAT 1015 Reversible Primes(进制转换+素数)
- 乱码问题,解决办法不一定是”统一所有编码”
- Java 中的接口有什么作用?
- makefile文件的一些解读
- IMWeb提升营Day4 | 训练题21:栈的压入、弹出序列
- 【备忘】大数据Hbase视频源码解析与开发实战教程下载
- cef MasterBuildQuickStart
- Linux总结笔记5-配置虚拟主机
- 如何创建自己的网站
- 设计模式:工厂方法模式