`

JAVA字符串与字符编码处理的终极解决

 
阅读更多

      图中详细描述了 字符串类String 与 文件File ,ByteBuffer,CharBuffer,byte[] 数组,char[]数组之间的互相转换。

 



JAVA字符串与字符编码处理的终极解决

 

 

几点心得:

1)String类始终是以Unicode编码形式存储.

2)注意String.getBytes()的使用:

   如果不带字符集参数,就会依赖于JVM的字符集编码,LINUX上一般为UNICODE,WINDOWS下一般为GBK.(要想改变JVM缺省字符集编码,启动JVM时用选项-Dfile.encodeing=UTF-8.

  为了安全起见,建议始终带参数调用,例如:String s ; s.getBytes("UTF-8")。

3)Charset类非常好用,

   Charset.encode 是编码,即把String按你指定的字符集编码格式进行编码后输出字节数组。

   Charset.decode 是解码,即把一个字节数组按你指定的字符集编码格式进行解码后输出成字符串。

 

举例如下:

 

    String s = Charset.defaultCharset().displayName();

    String s1 = "我喜欢你,My Love";

   

    ByteBuffer bb1 = ByteBuffer.wrap(s1.getBytes("UTF-8"));

 

    for(byte bt:bb1.array()){

        System.out.printf("%x",bt);

    }

    //char[]用法

    char[] chArray={'I','L','o','v','e','你'};

 

    //CharBuffer用法

    CharBuffer cb = CharBuffer.wrap(chArray);

    //重新定位指针

    cb.flip();

 

    String s2= new String(chArray);

 

    //ByteBuffer用法

    ByteBuffer bb2 = Charset.forName("utf-8").encode(cb);

 

    // 利用Charset编码为指定字符集

 

    ByteBuffer bb3 = Charset.forName("utf-8").encode(s1);

 

    byte [] b   = bb3.array() ;

 

    // 利用Charset按指定字符集解码为字符串

    ByteBuffer bb4= ByteBuffer.wrap(b);

 

    String s2 = Charset.forName("utf-8").decode(bb4).toString();

 

分享到:
评论

相关推荐

    乱码终极解决办法java实现

    5. **字符串处理**:在Java中,字符串是不可变的,它们总是以Unicode编码存在。如果需要与特定编码的字节数组相互转换,可以使用`String.getBytes()`和`new String(byte[], charset)`。 6. **国际化(i18n)**:在...

    java乱码终极必杀技

    Java编程语言在处理字符编码时可能会遇到乱码问题,这主要涉及到输入输出、网络传输、文件读写等场景。在Java中,理解字符编码的概念、常见编码格式以及如何正确设置和转换编码至关重要。本篇文章将深入探讨Java乱码...

    java中文乱码终极解决方案

    Java中文乱码问题一直是开发者们头疼的痛点,尤其是在处理文件读写、网络传输或数据库操作时,不恰当的字符编码设置往往会导致乱码现象。本文将深入探讨Java中解决中文乱码的终极策略,帮助开发者彻底摆脱这个困扰。...

    Java-J2EE中文问题终极解决之道.doc

    尤其是对于那些初学者来说,中文字符的正确显示与处理往往成为项目的绊脚石。本文旨在探讨Java-J2EE中文问题的终极解决之道,通过对现有解决方案的分析,提出一套全面且有效的处理方案。 #### 二、传统的解决方案...

    Java/J2EE中文问题终极解决之道

    对于此类问题的根本解决方法不仅需要理解Java系统内部如何处理字符编码,还需要掌握一系列实用的技术手段来确保在各种环境下的中文字符正确显示与处理。本文将详细探讨这一主题,并提供具体的解决方案。 #### Java/...

    解决android读取中文乱码 自动判断文档类型并转码

    在 Java 中,我们可以使用 BufferedInputStream 和 BufferedReader 来读取文件,并通过判断文件的前三个字节来确定文件的编码格式。常见的编码格式有 UTF-8、Unicode、UTF-16BE 和 UTF-16LE 等。 在上面的代码中,...

    J2EE中文问题终极解决之道

    解决这个问题需要理解Java的字符编码处理以及J2EE容器的工作原理。以下是一些关键知识点: 1. **Java字符串编码**:Java内部使用UTF-8编码进行字符串运算。字符串的初始编码取决于操作系统默认的字符集。这意味着在...

    乱码问题终极解决方案

    在Java中,字符串的默认编码可能与操作系统或文件系统的编码不同,这就会在读写文件时引发乱码。而在JSP中,HTTP请求和响应的编码如果不匹配,或者页面编码设置不正确,也可能出现乱码。 1. **Java中的乱码处理**:...

    java登陆验证终极版

    综上所述,这个“Java 登录验证终极版”涵盖了 Java 编程、密码处理、数据库交互、网络安全性、会话管理等多个方面的知识,通过学习和实践这个项目,开发者可以全面提升自己在登录验证领域的技能。

    javascript 去字符串空格终极版(支持utf8)

    下面我先是正则表达式去掉编码为32的空格,再用递归的方法去掉字符串两边的unicode空格。 代码如下:/** 去字符两端空格 开始 *@author 敖士伟 *@version v1.0 *@date 2009/11/14 22:51 */ String.prototype.trim = ...

    j2ee中文乱码问题终极解决之道

    2. 字符串编码转换:在接收数据时,使用`getBytes()`和`new String()`方法进行编码转换,例如从GBK转换为ISO8859_1,反之亦然。 3. 设置服务器语言环境:在某些情况下,将服务器环境设置为简体中文,可能能解决乱码...

    (超赞)JAVA精华之--深入JAVA API

    **2.3 Java/J2EE中文问题终极解决之道** - **中文支持** - 处理 Java 应用程序中的中文问题。 **2.4 Java Web应用中的任务调度** - **任务调度** - 使用定时器或计划任务来执行周期性任务。 **2.5 用连接池...

    struts中文问题,struts国际化问题——终极解决方案

    ### Struts中文问题与国际化问题——终极解决方案深度解析 #### 引言 在Web应用开发中,特别是使用Struts框架时,中文显示和国际化(Internationalization,简称i18n)问题是开发者常遇的挑战。本文将深入探讨解决...

    Struts2乱码终极解决办法

    3. **数据库连接**:检查数据库连接字符串中的字符集设置,确保与应用一致。 #### 五、总结 通过以上几个方面的调整,可以有效地解决Struts2框架中的乱码问题。需要注意的是,在实际操作过程中可能还会遇到一些特殊...

    阿里巴巴Java开发手册(终极版)

    2. **类型与数据**:讨论了Java的基础数据类型、自动装箱拆箱、字符串处理以及集合框架的使用。强调了避免直接使用equals()比较字符串,而应使用Objects.equals(),以及避免在循环中创建不必要的集合对象。 3. **...

    JavaWeb的各种中文乱码终极解决方法

    JavaWeb 中文乱码问题是一个常见的问题,解决方法有多种,但都需要了解字符编码、响应头和 Servlet 输出机制等知识。本文将从Servlet 输出乱码、Servlet 文件下载乱码两方面详细讲解 JavaWeb 中文乱码的解决方法。 ...

    阿里巴巴Java开发手册终极版

    《阿里巴巴Java开发手册终极版》是Java开发者的重要参考资料,它由阿里巴巴集团的资深技术专家团队编写,旨在规范Java开发过程中的编码习惯,提高代码质量和团队协作效率。本手册覆盖了从基本语法到高级特性的全面...

    阿里巴巴Java开发手册终极版v1.3.x.zip

    手册推荐使用StringBuilder而非String进行字符串拼接,减少对象创建;提倡使用局部变量,减少内存消耗;对于数据库访问,鼓励使用预编译的PreparedStatement,提高执行效率。 5. **设计模式**:设计模式是解决常见...

Global site tag (gtag.js) - Google Analytics