来源:http://aayy520.blog.163.com/blog/static/2318226020118675028822/
一、先来看一些有趣的字符编码转换
代码
|
以GBK格式保存 |
以UTF-8格式保存 |
String str = "cn中国"; |
|
|
java.net.URLEncoder.encode(str, "iso-8859-1") |
cn%3F%3F |
cn%3F%3F |
java.net.URLEncoder.encode(str, "gbk") |
cn%D6%D0%B9%FA |
cn%D6%D0%B9%FA |
java.net.URLEncoder.encode(str, "utf-8") |
cn%E4%B8%AD%E5%9B%BD |
cn%E4%B8%AD%E5%9B%BD |
new String(str.getBytes(),"iso-8859-1") |
cn???ú |
cn?????? |
new String(str.getBytes(),"gbk") |
cn中国 |
cn涓浗 |
new String(str.getBytes(),"utf-8") |
cn?й? |
cn中国 |
JavaScript
|
|
escape('cn中国') |
cn%u4E2D%u56FD |
encodeURI('cn中国') |
cn%E4%B8%AD%E5%9B%BD |
encodeURIComponent('cn中国') |
cn%E4%B8%AD%E5%9B%BD |
二、Encoding与contentType乱码
1,JSP文件中的Encoding与contentType的区别:
Encoding:该JSP文件保存时所用的编码。
contentType:该文件从服务器发送给客户端时的编码(gbk,utf-8均可正确显示)。
两种编码可以不同。
常见设置:
Encoding="utf-8" contentType="text/html;charset=utf-8"
2,初学者可能喜欢用记事本、EditPlus进行编写JSP文件,在 windows系统上默认保存格式是gbk的,如果Encoding设置成了utf-8,那就会有乱码。解决办法就是先打开记事本,然后以UTF-8的格 式打开JSP文件,删除掉乱码即可;或拷贝到MyEclipse中进行修改。
三、contentType导致form,herf提交乱码
表单提交方式 "cn中国"
|
ContentType
|
TCP Monitor监测到的数据
|
FORMGET方式 |
UTF-8 |
cn%E4%B8%AD%E5%9B%BD |
GBK |
cn%D6%D0%B9%FA |
FORMPOST方式 |
UTF-8 |
cn%E4%B8%AD%E5%9B%BD |
GBK |
cn%D6%D0%B9%FA |
超链接方式 |
UTF-8 |
cn涓浗 |
GBK |
cn中国 |
和第一张表对应着看,是不是发现了一些规律!
(一)FORM
FORM表单的编码方式与JSP中contentType的设置有关,GBK编码成GBK,UTF-8编码成UTF-8。这时,当我们在后台取回表单数据的时候,要对应的设置与表单所在页面的contentType格式。简单点说:格式要一一对应。
解决方案:
request.setCharacterEncoding("GBK");或者
request.setCharacterEncoding("UTF-8");
(二)超链接
那么对于超链接呢?对应着看第一张表的倒数第二行。我们传递的数据按new String(str.getBytes(),"gbk")方式进行了解码。如果前台的contentType正好是GBK,那么提交到后台的数据无需解码了。但如果是UTF-8那就要还原成我们原来的编码格式(被解码过了)。
String str = new String(str1.getBytes("gbk"));
这样就可以取回原来的值。
这里值得一提的是:
String str1 = new String(str.getBytes("gbk")); //这是按GBK方式编码
String str2 = new String(str1.getBytes(),"gbk"); //这是按GBK方式解码
所以大家要记牢两者的区别,以免在解码的时候又编码了一次,很难被发现。
实际上,在处理这类URL自带中文的情况下,一般使用
java.net.URLEncoder.encode(str, "utf-8")或JS中的encodeURI('cn中国')
进行URL编码,这样我们的后台程序可以使用同一种方法进行解码了。
例如,常见的用户登录失败,我们给用户一个提示信息:
String url = java.net.URLEncoder.encode("login.jsp?error=密码不正确","utf-8");
response.sendRedirect(url);
这样在前台页面:
request.setCharacterEncoding("UTF-8");
之后就可以取出error中的内容,直接显示了。
四、AJAX乱码
AJAXGET方式 |
cn中国 |
AJAXPOST方式 |
cn涓浗 |
有了上面的解决超链接方式乱码的经验,这个解决起来就简单了。请参看上面所述超链接乱码解决方案。
五、JQuery中的AJAX乱码
JQueryGET方式[非URL拼接] |
cn%E4%B8%AD%E5%9B%BD |
JQueryPOST方式 |
cn%E4%B8%AD%E5%9B%BD |
还是JQuery厚道啊!汉字已经按FORM表单的URL进行了编码,解决起来很容易。请参见FORM表单乱码解决方案。
六、MYSQL乱码
解决MYSQL乱码有三点,说一下:
1,在安装的时候选那个“日本话”那个选项,这样才能支持中文。
2,请不要使用navicat来创建数据库,它默认的还是拉丁文。请手写SQL建库语句,并设置编码。
3,创建表的时候要选UTF8,另外字段也要选UTF8编码
分享到:
相关推荐
总的来说,"ASCII编码转码工具"是处理字符编码问题的一个实用工具,尤其在Struts框架下进行国际化开发时,它能够帮助开发者解决因编码差异带来的问题,提高开发效率。同时,深入理解字符编码和转码原理也是每个IT...
这是一个URL编码转码工具,具体的功能和演示不发了。 实际功能是把网址转换为%hex 的形式。 1. 这个曾经是安全领域涉及到SQL注入破解屏蔽字符串的方法之一,但是现在已经很少用了 2. 这曾经是入侵大型网站(特别是...
**iconv编码转码工具详解** 在信息技术领域,数据编码是至关重要的,因为不同的系统和程序可能使用不同的字符编码方式来表示文本。其中,`iconv`是一个广泛使用的命令行工具,它允许用户在各种字符编码之间进行转换...
本文将深入探讨“编码转码专用工具”,特别是针对UTF-8和GBK这两种常见的中文编码格式的转换。 编码,简单来说,是将字符转化为二进制形式的过程,以便计算机能够存储和处理。在中文环境下,常见的编码方式有GBK...
编码转码器是一种工具,主要用于在不同的字符编码之间进行转换,以确保数据的正确性和兼容性。在IT领域,字符编码扮演着至关重要的角色,因为它们决定了计算机如何理解和显示文本。下面将详细介绍标题和描述中提到的...
这个“FFmpeg_06_编码转码”主题聚焦于使用 FFmpeg 进行音视频编码和转码的操作,这在数字媒体处理、流媒体服务以及内容制作中非常重要。在VC2010环境下开发FFmpeg应用,可以利用C++语言的强大功能来实现复杂的...
FD转码器
音视频实时编码、离线转码、收录,实时编码方面,支持网络、采集卡等多种输入,输出方面支持HLS,HTTP渐进下载,UDP等,离线转码方面支持通过web实现媒体的上下载,支持大文件,支持丰富的输入输出格式。可用于音...
Compressor 4.6.4 更新内容: 自动将视频居中裁剪为正方形、竖向或自定大小,同时保持原始高度。 使用标准键盘快捷键从“访达”拷贝文件并粘贴到批处理窗口。 使用额外音轨创建补充 IMF 项目包,或者在标准批处理中...
GBK与UTF编码批量转码工具,可以用于DZ论坛和PHPWIND论坛模板和插件GBK,UTF之间的转码。
标题中的“转码工具”指的是在信息技术领域中用于转换不同编码格式的软件或程序。编码在计算机科学中扮演着至关重要的角色,因为它允许计算机理解和处理各种数据,如文本、音频和视频。不同的编码标准(如ASCII、...
此“搜企业编码批量转码工具.7z”文件提供了一个解决方案,帮助用户将UTF-8编码的文本数据转换为GB2312编码,反之亦然。下面我们将深入探讨编码转换的相关知识点。 1. **编码基础**: - **ASCII编码**:最早的字符...
最新版一键全自动批量 快手UID转码 适合私域引流操作用户批量使用,操作简单方便快捷。
在IT领域,字符编码是计算机处理文字的基础,不同的编码方式决定了如何存储和显示各种语言的文字。"文字编码转换工具"是一种专门用于解决不同编码格式之间转换问题的应用程序。这种工具通常能够帮助用户将文件或文本...
曼彻斯特编码是一种广泛应用于数据通信中的数字信号编码方式,特别是在局域网(LAN)技术中,如以太网。这种编码技术将二进制数据流转换为模拟电信号,以便在物理介质上传输。本资源提供的是一款名为“曼彻斯特编码...
描述中的“编码转码工具”就是为了解决这类问题。这个名为`encoding_p.java`的Java源代码文件,应该包含了一个简单的类或函数,用于实现文件从GBK到UTF-8,以及从UTF-8到GBK的转换。在Java中,我们可以使用`java.nio...
根据提供的标题、描述、标签及部分内容,我们可以了解到这段代码与GSM7Bit编码转换至Unicode有关。接下来,我们将深入解析这段代码所涉及的关键概念和技术细节。 ### GSM7Bit编码简介 GSM7Bit是一种用于移动通信...
Python字符编码转换主要涉及到ASCII、Unicode以及GBK和UTF-8等编码格式,这些编码格式在处理文本数据时扮演着重要角色。在理解Python中的字符编码转换之前,我们需要了解一些基本概念。 1. ASCII编码:这是一个7位...
织梦转码器是一款专为处理网页编码问题而设计的工具,主要应用于Dreamweaver(简称织梦)用户,帮助他们解决在编辑和显示网页时遇到的编码不兼容或者乱码的问题。网页编码是互联网技术中的一个核心概念,它涉及到...
小程序接收蓝牙设备发送的信息,但是蓝牙设备发送的是gb2312编码的arryBuffe,将发送的含中文编码转码成字符串,一直乱码。 原因 乱码的原因是编码方式不同,小程序显示的是utf-8编码,而蓝牙设备发送的是gb2312...