`

Java编码转义

阅读更多
    import java.io.UnsupportedEncodingException;

    /**
    * 转换字符串的编码
    */
    public class ChangeCharset {
    /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
    public static final String US_ASCII = "US-ASCII";

    /** ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1 */
    public static final String ISO_8859_1 = "ISO-8859-1";

    /** 8 位 UCS 转换格式 */
    public static final String UTF_8 = "UTF-8";

    /** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
    public static final String UTF_16BE = "UTF-16BE";

    /** 16 位 UCS 转换格式,Little-endian(最高地址存放低位字节)字节顺序 */
    public static final String UTF_16LE = "UTF-16LE";

    /** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
    public static final String UTF_16 = "UTF-16";

    /** 中文超大字符集 */
    public static final String GBK = "GBK";

    /**
    * 将字符编码转换成US-ASCII码
    */
    public String toASCII(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, US_ASCII);
    }
    /**
    * 将字符编码转换成ISO-8859-1码
    */
    public String toISO_8859_1(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, ISO_8859_1);
    }
    /**
    * 将字符编码转换成UTF-8码
    */
    public String toUTF_8(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, UTF_8);
    }
    /**
    * 将字符编码转换成UTF-16BE码
    */
    public String toUTF_16BE(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, UTF_16BE);
    }
    /**
    * 将字符编码转换成UTF-16LE码
    */
    public String toUTF_16LE(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, UTF_16LE);
    }
    /**
    * 将字符编码转换成UTF-16码
    */
    public String toUTF_16(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, UTF_16);
    }
    /**
    * 将字符编码转换成GBK码
    */
    public String toGBK(String str) throws UnsupportedEncodingException {
    return this.changeCharset(str, GBK);
    }

    /**
    * 字符串编码转换的实现方法
    * @param str 待转换编码的字符串
    * @param newCharset 目标编码
    * @return
    * @throws UnsupportedEncodingException
    */
    public String changeCharset(String str, String newCharset)
    throws UnsupportedEncodingException {
    if (str != null) {
    //用默认字符编码解码字符串。
    byte[] bs = str.getBytes();
    //用新的字符编码生成字符串
    return new String(bs, newCharset);
    }
    return null;
    }
    /**
    * 字符串编码转换的实现方法
    * @param str 待转换编码的字符串
    * @param oldCharset 原编码
    * @param newCharset 目标编码
    * @return
    * @throws UnsupportedEncodingException
    */
    public String changeCharset(String str, String oldCharset, String newCharset)
    throws UnsupportedEncodingException {
    if (str != null) {
    //用旧的字符编码解码字符串。解码可能会出现异常。
    byte[] bs = str.getBytes(oldCharset);
    //用新的字符编码生成字符串
    return new String(bs, newCharset);
    }
    return null;
    }

    public static void main(String[] args) throws UnsupportedEncodingException {
    ChangeCharset test = new ChangeCharset();
    String str = "This is a 中文的 String!";
    System.out.println("str: " + str);
    String gbk = test.toGBK(str);
    System.out.println("转换成GBK码: " + gbk);
    System.out.println();
    String ascii = test.toASCII(str);
    System.out.println("转换成US-ASCII码: " + ascii);
    gbk = test.changeCharset(ascii,ChangeCharset.US_ASCII, ChangeCharset.GBK);
    System.out.println("再把ASCII码的字符串转换成GBK码: " + gbk);
    System.out.println();
    String iso88591 = test.toISO_8859_1(str);
    System.out.println("转换成ISO-8859-1码: " + iso88591);
    gbk = test.changeCharset(iso88591,ChangeCharset.ISO_8859_1, ChangeCharset.GBK);
    System.out.println("再把ISO-8859-1码的字符串转换成GBK码: " + gbk);
    System.out.println();
    String utf8 = test.toUTF_8(str);
    System.out.println("转换成UTF-8码: " + utf8);
    gbk = test.changeCharset(utf8,ChangeCharset.UTF_8, ChangeCharset.GBK);
    System.out.println("再把UTF-8码的字符串转换成GBK码: " + gbk);
    System.out.println();
    String utf16be = test.toUTF_16BE(str);
    System.out.println("转换成UTF-16BE码:" + utf16be);
    gbk = test.changeCharset(utf16be,ChangeCharset.UTF_16BE, ChangeCharset.GBK);
    System.out.println("再把UTF-16BE码的字符串转换成GBK码: " + gbk);
    System.out.println();
    String utf16le = test.toUTF_16LE(str);
    System.out.println("转换成UTF-16LE码:" + utf16le);
    gbk = test.changeCharset(utf16le,ChangeCharset.UTF_16LE, ChangeCharset.GBK);
    System.out.println("再把UTF-16LE码的字符串转换成GBK码: " + gbk);
    System.out.println();
    String utf16 = test.toUTF_16(str);
    System.out.println("转换成UTF-16码:" + utf16);
    gbk = test.changeCharset(utf16,ChangeCharset.UTF_16LE, ChangeCharset.GBK);
    System.out.println("再把UTF-16码的字符串转换成GBK码: " + gbk);
    String s = new String("中文".getBytes("UTF-8"),"UTF-8");
    System.out.println(s);
    }
    }

 

分享到:
评论

相关推荐

    初学者,Java转义字符

    ### Java转义字符详解 #### 一、八进制转义序列 在Java中,八进制转义序列是通过`\`后跟1至3位的八进制数字来表示的,其范围从`\000`到`\377`。这种转义序列主要用于表示ASCII字符集中的一部分字符。 **示例:** ...

    java 中文Unicode转换

    在Java编程语言中,Unicode编码是一种广泛使用的字符集,它包含了世界上几乎所有的文字,包括中文。Unicode使得在程序中处理不同语言的文本变得更加方便。本文将深入探讨如何在Java中进行中文字符到Unicode编码的...

    Java 安全编码.pdf

    Java 安全编码 Java 安全编码是 Java 开发语言中的一项重要考虑因素。Java 安全编码的主要目标是保护 Web 应用程序免受各种攻击和漏洞的影响。下面是 Java 安全编码的详细知识点: 1. SQL 注入攻击 SQL 注入攻击...

    java properties文件中文转化

    总之,Java Properties文件中文转化是一个常见的编程问题,涉及到字符编码、Unicode转义等概念。通过理解这些基础知识并利用适当的工具或库,我们可以确保Java程序正确地处理和显示中文内容,从而提升软件的国际化...

    java编码规范.pdf

    ### Java编码规范详解 #### 1. 源文件规范 **1.1 文件名** - **规则**:源文件名必须与它所包含的顶级类名完全一致,包括大小写,并且文件扩展名为`.java`。 - **目的**:确保文件名与类名的一致性,便于开发人员...

    Java编码规范总结

    修复建议:String的split方法传递的参数是正则表达式,正则表达式本身用到的字符需要转义,如:句点符号“.”,美元符号“$”,乘方符号“^”,大括号“{}”,方括号“[]”,圆括号“()” ,竖线“|”,星号“*”,...

    Google 推出的 Java 编码规范

    《Google 推出的 Java 编码规范》是 Google 提供的一份详细的 Java 编程风格指南,旨在确保代码的一致性和可读性。这份规范不仅关注代码的格式,还涵盖了编码约定和标准。以下是对该规范的详细解读: **1. 术语说明...

    JAVA安全编码手册.pdf

    Java编码中常见的注入攻击实例包括使用JDBC、iBatis、PHP等技术。这些实例展示了在开发中如何不当地拼接用户输入与SQL语句。例如,在JDBC示例中,用户输入的参数被直接拼接到查询字符串中,如果用户输入的数据被精心...

    留言板(java编码)

    【Java编码实现留言板系统】 Java是一种广泛使用的编程语言,尤其在Web开发中,它提供了丰富的功能和工具来创建复杂的Web应用程序。在这个特定的项目中,我们关注的是一个基于Java的留言板系统,它利用了Java ...

    详解JAVA中转义字符

    在Java中,八进制转义序列由反斜线(\)后跟1至3位八进制数字构成,其表示的字符编码范围从'\000'到'\377'。例如,'\101'代表大写字母'A',而'\134'表示反斜线字符(\)。这种转义序列主要用以表示那些不是标准ASCII...

    java编码规范1

    Java 编码规范是开发高质量、可维护代码的基础。Google 提供了一份详尽的 Java 编程风格指南,旨在确保代码的一致性和易读性。这份指南涵盖了从源文件的基本结构到具体的命名约定、编程实践等多个方面。以下是该指南...

    LitJson 扩展 扩展了一个不转义汉字的方法

    在 JSON 格式中,非 ASCII 字符(如汉字)通常会被转换为 Unicode 转义序列,形式为 `\uXXXX`,其中 `XXXX` 是该字符的 Unicode 编码。这种转义是为了确保 JSON 文本在所有支持 UTF-8 的环境中都能正确解析。然而,...

    STRUTS ActionForm乱码,servlet全局过滤器转义编码。

    Struts框架中的ActionForm乱码问题以及Servlet全局过滤器的转义编码处理是Java Web开发中常见的字符编码问题。在开发基于Struts的Web应用时,乱码主要出现在三个方面:页面显示乱码、参数传递乱码以及国际化资源文件...

    转义字符.txt

    2. **十六进制转义字符(Unicode)**:以`\u`开头,后跟四位的十六进制数字,表示Unicode编码中的字符。由于Unicode支持的范围更广,可以表示超过65535个不同的字符,因此在处理多语言文本时更为常用。例如,`\u0000...

    Java文本字符编码解码操作类 Escape.java源代码.rar

    在Java编程语言中,字符编码和解码是处理文本数据时不可或缺的部分,特别是在网络通信、文件存储或跨系统交互中。Escape.java源代码是专门设计用于处理文本字符的编码和解码操作的一个类。这个类的目标是确保无论...

    java中的转义字符介绍

    Unicode转义字符以'\u'开头,后面跟着四个十六进制数字,总共表示一个16位的Unicode编码。例如,'\u0000'同样表示空字符,'\u0020'代表空格。Unicode转义字符允许开发者在代码中直接使用任何Unicode字符,包括非...

    常用的java汉字unicode编码

    1. **Unicode转义序列**:Java字符串可以直接包含Unicode转义序列,如`\u7684`代表的是“的”字。这种形式在源代码中表示Unicode字符非常方便。 2. **Character类的方法**:Java提供了`Character`类,其中包含了一...

    转义表单提交字符处理函数

    ### 转义表单提交字符处理函数 在Web开发中,确保用户输入的数据安全是非常重要的。不正确的处理可能会导致诸如XSS(跨站脚本攻击)等安全问题。因此,对用户提交的数据进行适当的转义是至关重要的。本文将详细介绍...

    JAVA编码规范

    ### JAVA编码规范知识点详解 #### 一、概述 JAVA编码规范是软件开发过程中为了确保代码质量和安全性而制定的一系列规则和标准。对于基于JAVA语言的软件项目而言,遵循一套严谨的编码规范至关重要,它不仅能提高...

    Java字符编码转换过程说明

    例如,GBK编码的源文件在UTF-8环境下编译可能导致乱码,可以通过写入`\u4e00`这样的Unicode转义序列并检查对应的整数值来检测源文件的编码。 3. **文件的读写**: Java提供了`InputStream`和`OutputStream`处理...

Global site tag (gtag.js) - Google Analytics