`
liushilang
  • 浏览: 89367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java getBytes方法详解(字符集问题)

阅读更多
今天工作中又一次遇到了java字符集问题,这次是由getBytes方法导致的。 
   以前的时候,曾经很多次的解决过java字符集以及乱码的问题,以为对这块很了解了,至到今天的又一次深入的学习,才发现以前的认识当中存在的问题,下次就getBytes方法在应用级别进行比较实际的解释。
   1、Unicode是一种编码规范,是为解决全球字符通用编码而设计的,而rUTF-8,UTF-16等是这种规范的一种实现。
   2、java内部采用Unicode编码规范,也就是支持多语言的,具体采用的UTF-16编码方式。
   3、不管程序过程中用到了gbk,iso8859-1等格式,在存储与传递的过程中实际传递的都是Unicode编码的数据,要想接收到的值不出现乱码,就要保证传过去的时候用的是A编码,接收的时候也用A编码来转换接收。
   4、如果双方的file.encoding确保都相同,那就省事了,都默认转了,但往往在不同项目交互时很多时候是不一致的,这个时候是必须要进行编码转换的。
    5、无论如论转换,java程序的数据都是要先和Unicode做转换,这样也就是能处理多语言字符集的原因了。底层保持了一致,只要在传值和接值的时候也一致就肯定不会出现乱码了。

    6、在看懂以上5点之后,请参考demo示例如下:
         //Demo.java   该java文件编码方式为UTF-8
        
package test;

public class Demo {
public static void main(String args[])throws Exception {
String str = "中文字符";
System.out.println("original string---" + str);// 会正常输出原始串
/**
* str.getBytes();//如果括号中不写charset,则采用的是Sytem.getProperty("file.encoding"),即当前文件的编码方式,
* 很多人写的是系统的默认编码,通过代码测试并非如此,实际得到的是文件的编码方式*

* str.getBytes("charset");//指定charset,即将底层存储的Unicode码解析为charset编码格式的字节数组方式

* String new_str=new String(str.getBytes("utf-8"),"gbk"));
* //将已经解析出来的字节数据转化为gbk编码格式的字符串,在内存中即为gbk格式的字节数组转为Unicode去交互传递
*/
String new_str = new String(str.getBytes("utf-8"), "gbk");
    /**
     * 此时的输出是乱码,在UTF-8的file.encoding下输出gbk格式的数据肯定是乱码,但是new_str的确是gbk编码式的
     * 此时的乱码源于encoding不符,但gbk格式的new_str本身数据并没有问题,通过下面的转换也可以看得出来
     */
System.out.println("new string----" + new_str);
String final_str = new String(new_str.getBytes("gbk"), "utf-8");//此处的含意与最上边的注释是一致的参数含意
/**
*输出是正常的,此时将gbk编码格式的new_str字符串,用gbk这个charset去解析它,然后用utf-8再转码一次,
    因为new_str确实是gbk格式的,才能经过utf-8编码得到正常的数据显示。
*/
System.out.println("final string---"+final_str);
}
}

仅为今天个人学习所得,若有不足,敬请交流
分享到:
评论

相关推荐

    java字符集编码问题

    ### Java字符集编码问题详解 #### 一、引言 在Java编程中,字符集编码问题是一个常见且重要的议题。由于不同的系统、平台以及网络环境中可能存在多种字符编码格式,这导致了在处理文本数据时可能会遇到编码不一致...

    Java中的String类getBytes()方法详解与实例

    ### Java中的String类getBytes()方法详解与实例 #### 简介 在Java编程语言中,`String`类是处理文本数据的核心类之一。它表示一个不可变的字符序列,这意味着一旦创建了一个`String`对象,其内容就不能被更改。在...

    java字符集

    ### Java字符集详解 #### 一、概述与背景 本文主要探讨了字符编码的基本概念以及Java编程语言如何处理不同字符集。随着信息技术的发展,字符编码技术也在不断演进,以支持全球范围内各种语言的文本表示需求。文章...

    Java设置String字符串编码方法详解

    Java语言默认使用Unicode作为其内部字符集,这使得Java程序可以处理各种语言的字符。 1. 构造String对象时指定编码 在创建String对象时,我们可能需要从字节数组或输入流中读取数据并指定特定的编码。例如,使用`...

    java_字符编码 Javajava_字符编码问题

    如果省略 `"UTF-8"` 参数,则默认使用系统的默认字符集进行转换。 **2. 字节数组到字符串的转换** ```java String newStr = new String(bytes, "UTF-8"); ``` 这里的 `new String(bytes, "UTF-8")` 表示创建一个...

    JAVA中汉字字符转化为英文字符

    - **Unicode**: 一种国际标准的字符集,用于处理世界上所有语言的文字。 - **ASCII**: 一种早期的字符编码方式,仅支持英文和其他拉丁文字。 - **UTF-8**: 一种常用的Unicode编码方式,可变长度,兼容ASCII,并且能...

    java字符编码问题

    ### Java字符编码问题详解 #### 一、引言 在Java开发过程中,字符编码问题是一个常见且容易引发各种隐藏问题的领域。不正确的字符编码处理可能导致数据丢失、乱码甚至是程序异常。本文将深入探讨Java中的字符编码...

    JAVA程序的编码格式详解

    编码的存在解决了不同语言和字符集之间的兼容性问题,使得全球范围内的信息交换成为可能。 #### 三、常见的编码格式 ##### 1. ASCII - **简介**:美国标准信息交换码(American Standard Code for Information ...

    java字符串编码转换

    通常情况下,浏览器会根据页面中的 `<meta>` 标签指定的字符集来解释页面内容: ```html ``` 同时,服务器端也需要正确设置响应的编码,以便浏览器能够正确解析返回的数据。 #### 五、总结 本文介绍了Java字符...

    详解Java中String类型与默认字符编码

    Java中String类型与默认字符编码详解 Java中String类型与默认字符编码是Java编程语言中一个重要的概念。String类型是Java中最基本的数据类型之一,它用于表示文本数据。然而,在Java中String类型的默认编码方式一直...

    Java Base64编码方法详解及实例分析

    - Base64编码基于一个64个字符的字符集,包括大小写字母、数字和两个符号('+', '/')。每个字符代表6位二进制数据。 - 二进制数据按照每3个字节(24位)一组进行编码,因为3个字节可以转换为4个Base64字符(每个...

    java解决解决get中文乱码问题

    当客户端与服务器端使用的字符集不一致时,就会导致乱码问题的发生。本文将详细介绍如何在Java中解决GET请求中文乱码问题,并提供一种有效的方法。 #### 一、理解GET请求中文乱码的原因 在HTTP协议中,GET请求参数...

    javajsp中 中文问题详解

    在Java与JSP环境中处理中文问题,涉及到编码、字符集转换以及如何正确处理字符串和流等关键知识点。本文将深入探讨这些概念,并提供具体的代码示例来解释如何在实际开发中解决中文显示或乱码的问题。 ### 1. ...

    java 字符串截取的实例详解

    但是,该方法不考虑字符串的编码方式和字符集,可能会导致截取的子串不正确。为解决这个问题,可以使用getBytes()方法将字符串转换为字节数组,然后根据字节数组的长度截取子串。 二、GBK 编码下的字符串截取 在 ...

    java编程出现中文乱码解决方法一

    例如,在Java Web开发中,如果服务器端与客户端之间或者数据库连接时使用的字符集不匹配,则很容易出现中文乱码的情况。 #### 问题描述 根据题目中的描述,主要涉及的是在Java编程环境下如何解决中文乱码的问题。...

    Java中字符编码格式详解

    总的来说,Java中的字符编码格式涉及到了从源代码到运行时的多个阶段,理解这些机制对于开发能够正确处理各种字符集的Java应用程序至关重要。开发者需要特别注意编码转换时的正确性,避免因为编码不匹配导致的乱码...

Global site tag (gtag.js) - Google Analytics