在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通Operation System下,返回的东西不一样!
String.getBytes(String encode)方法会根据指定的encode编码返回某字符串在该编码下的byte数组表示,如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1");
将分别返回"中"这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1.
而与getBytes相对的,可以通过new String(byte[], decode)的方式来还原这个"中"字时,这个new String(byte[], decode)实际是使用decode指定的编码来将byte[]解析成字符串.
String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");
通过打印s_gbk、s_utf8和s_iso88591,会发现s_gbk和s_utf8都是"中",而只有s_iso88591是一个不认识的字符,为什么使用ISO8859-1编码再组合之后,无法还原"中"字呢,其实原因很简单,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1");来得到正确的"中"字在ISO8859-1中的编码值了,所以再通过new String()来还原就无从谈起了.
因此,通过String.getBytes(String encode)方法来得到byte[]时,一定要确定encode的编码表中确实存在String表示的码值,这样得到的byte[]数组才能正确被还原.
有时候,为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")
,
这样得到的s_iso8859-1字符串实际是三个在ISO8859-1中的字符,在将这些字符传递到目的地后,
目的地程序再通过相反的方式String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")
来得到正确的中文汉字"中".这样就既保证了遵守协议规定、也支持中文.
分享到:
相关推荐
### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...
- 对于已存在的进程,可以通过改变控制台编码或使用第三方库如`System.out.println(new String("汉字".getBytes("GBK"), "UTF-8"));`来转换编码输出。 3. **网络传输中的编码** - HTTP请求和响应中的编码问题,...
在Web开发中,尤其是在使用Java与JSP技术栈进行开发时,经常会遇到的一个问题是:如何处理AJAX请求中的中文字符乱码问题。本篇文章将详细介绍如何通过前端编码处理、后端参数接收以及响应头设置等手段来有效解决这一...
本资料的三部分(java中文解决大全2.mht、java中文解决大全1.mht、java中文解决大全3.mht)分别深入探讨了这些主题,并提供了具体的代码示例和实战案例,是学习和解决Java中文问题的宝贵资源。结合实际项目,读者...
然而,在处理中文等非ASCII字符时,经常会遇到一个令人头疼的问题——中文乱码。本文将详细介绍如何在JavaScript中对中文进行编码,并在Java后端进行解码来解决这一问题。 #### 一、问题背景 在使用AJAX向服务器...
本文主要针对两种常见的HTTP请求方法——POST和GET,分析了在form表单提交数据时遇到的中文乱码问题,并提供了相应的解决方案。 一、POST方式提交数据的中文乱码问题 当用户通过表单以POST方式提交包含中文字符的...
在使用Struts框架进行Web开发时,经常会遇到一个让人头疼的问题——中文乱码。特别是在Tomcat服务器环境下,如何有效地解决这一问题,确保中文字符能够正常显示与传递,是许多开发者都需要面对的挑战。本文将通过...
在Web开发过程中,尤其是在处理用户输入的数据时,经常会遇到一个让人头疼的问题——“乱码”。这通常发生在不同编码格式之间转换不当时。对于Java Server Pages (JSP) 开发者而言,了解如何有效解决这个问题至关...
3. 乱码问题:可以使用 newString(item.getString().getBytes("ISO8859-1"),"GB2312")) 方法解决。 4. 上传文件无法存在自己设定的目录下解决方法:创建一个文件夹,并检查其是否存在。 通过使用 Commons-...
在Java Web开发中,尤其是在处理中文参数时,经常会遇到一个常见问题——**jspservlet取参数乱码**。这一现象通常发生在当用户从客户端提交包含中文字符的表单至服务器端时,服务器端接收到的参数显示为乱码。这种...
确保使用的字符集与原始字符串相同,以避免乱码问题。 在SliceByByte.java这个文件中,我们可以看到实现这个功能的基本逻辑。它可能包含了一个名为`sliceByByte`的方法,接受一个字符串和要截取的字节数作为参数,...
6. **CharEncoding**:提供了一种确定和验证字符编码的方法,避免了常见的乱码问题。 三、使用示例 以下是一些基本的使用示例,展示了如何在1.9版本中使用Apache Commons Codec: ```java import org.apache....
### Java截取字符串(判断汉字) #### 背景与目的 在开发Web应用程序时,尤其是在使用Java Server Pages (JSP) 进行开发时,经常需要处理包含中文字符的字符串。由于中文字符通常占用两个字节,而英文字符只占用一...
- 在处理字符串数据时,由于可能存在编码问题,因此使用了`getBytes("iso-8859-1")`和`new String(..., "GB2312")`来进行编码转换,以避免乱码问题。 4. **资源管理**: - 使用`try-catch`结构捕获并处理可能发生...