已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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中的String类是按照unicode进行编码的,当使用String(byte bytes, String encoding)构造字符串时,encoding所指的是bytes中的数据是按照那种方式编码的,而不是最后产生的String是什么编码方式,换句话说,是让系统把bytes中的数据由encoding编码方式转换成unicode编码。如果不指明,bytes的编码方式将由jdk根据操作系统决定。 当我们从文件中读数据时,最好使用InputStream方式,然后采用String(byte bytes, String encoding)指明文件的编码方式。不要使用Reader方式,因为Reader方式会自动根据jdk指明的编码方式把文件内容转换成unicode编码。 当我们从数据库中读文本数据时,采用ResultSet.getBytes()方法取得字节数组,同样采用带编码方式的字符串构造方法即可。ResultSet rs;bytep bytes = rs.getBytes();String str = new String(bytes, gb2312);不要采取下面的步骤。ResultSet rs;String str = rs.getString();str = new String(str.getBytes(iso8859-1), gb2312); 这种编码转换方式效率底。之所以这么做的原因是,R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年宗教极端思想测试题及答案
- 教练协议书范文
- 有关货物运输合同12篇
- 2020北京理工大学MBA管理经济学 核心备考题库(含全套标准答案)
- 沈阳市康平县2025届四年级数学上学期阶段学业质量监测试题含答案解析
- 2026年生产车间安全主题活动方案设计
- 2026年幼儿园开学迎新生活动方案
- 2026年初中数学教研活动方案设计
- 汶上县2025-2026学年数学四年级上学期阶段考试试题(含答案解析)
- 2026年大学生命教育活动方案
- 2026年浙江省群众文化专业、图书资料专业、艺术系列高级专业技术职务任职考试(图书资料)复习题及答案
- 2026陕西榆林能源集团有限公司社会招聘应往届高校毕业生225人备考题库附答案详解
- 请结合马克思主义基本原理中有关科学社会主义的重要阐述理论联系实际谈一谈你对科学社会主义基本原则的认识(二)
- 天津市南开区2024-2025学年七年级下学期期末语文试题(含答案)
- 输变电工程多维立体参考价(2025年版)
- 商务英语专业四级
- 充棉机安全操作规程模版
- 煤矿淘汰设备目录(全六批)
- 《在长江源头各拉丹冬》课件ppt
- 外墙清洗方案与报价00
- 城市轨道交通毕业论文-屏蔽门
评论
0/150
提交评论