java转换字符串的编码(转)

package com.Alex.base;

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);
         }
        }

http://blog.csdn.net/chow__zh/article/details/8943355

时间: 2024-10-14 01:55:54

java转换字符串的编码(转)的相关文章

java转换字符串编码格式

代码: package com.test; import java.io.UnsupportedEncodingException; public class ConvertEncodingFormat { /** * 转换字符串编码 */ public static String convertEncodingFormat(String str, String formatFrom, String FormatTo) { String result = null; if (!(str == n

java 判断字符串什么编码类型

public static String getEncoding(String str) { String encode = "GB2312"; try { if (str.equals(new String(str.getBytes(encode), encode))) { String s = encode; return s; } } catch (Exception exception) { } encode = "ISO-8859-1"; try { if

转: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

实现字符串的编码转换,用以解决字符串乱码问题

引起乱码的情况很多~实质上 主要是字符串本身的编码格式 与程序所需要的编码格式不一致导致的.要解决乱码其实很简单, 分2步 : 1:获取到字符串 本身的编码 2:改变字符串编码 (本身编码 -> 新编码) 话不多说,直接贴代码 package cn.sccl.framework.util; import org.apache.commons.lang3.StringUtils; import java.io.UnsupportedEncodingException; /** * 字符编码工具类

使用EJS脚本将字符串转换成Base64编码

此博客为9925.org的镜像,登录9925.org可以查看到最新博文. 原文出处:http://ily.so/VVfyim 由于EJS脚本解释器是完美支持 ECMA-262 标准的,因此EJS脚本是JavaScript的真超集. 说了一段废话后,我其实是想说我在网上copy了一段JS支持的将字符串转换成Base64编码的代码,不知出处,这里斗胆将代码贴出,如有侵权请联系删除. var Base64 = {     // 转码表     table : [             'A', 'B

Java中字符串与日期之间的转换

项目过程中,经常遇到需要字符串格式的日期和Date类型的日期之间的相互转换.使用SimpleDateFormat类,可以方便完成想要的转换. SimpleDateFormat能够实现本地化的时间格式化及转换.从选定一个自定义的模式(pattren)开始,模式由已经定义好的 'A' to 'Z' 及 'a' to 'z'字母组成,也可以在模式中引入文本,但要使用’(单括号)括住.下图就是已经定义好的模式字母表: Letter Date or Time Component Presentation

如何使用Java代码获取文件、文件流或字符串的编码方式

今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.monitorenter.cpdetector.io.ASCIIDetector; import info.monitorenter.cpdetector.io.ByteOrderMarkDetector; import info.monitorenter.cpdetector.io.CodepageDete

转换字符串编码

做文章采集的时候,遇到了不同网站的字符编码不同的问题,于是写了一个简单的字符转换函数 <?php /* 转换字符串编码 */ function convert($str, $from = 'utf-8', $to = 'gb2312') { if(!$str) return false; if(!is_string($str))return false; $from = strtolower($from); $to = strtolower($to); $from = str_replace('

字符串转换成utf-8编码

a.将字符串转换成utf-8编码的字节,并输出,然后将该字节在转换成utf-8编码字符串,在输出 b.将字符串转换后才能gbk编码的字节,并输出,然后将该字节在转换成gbk编码字符串,在输出 def main():     n = "老男孩"     nBytes_utf = n.encode('utf-8')     nStr_utf = nBytes_utf.decode('utf-8')     print(nBytes_utf)     print(nStr_utf)