已阅读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版)
- 渠县招募社会工作服务岗位笔试真题2025
- 福建泉州师范学院招聘编制内笔试真题2025
- 2026 年新护士疼痛评估能力带教培训课件
- 2026 年初中秋季开学第一课劳动实践家务能力提升课件
- 学校学期心理健康教育工作计划
- 某重型机械厂技术更新办法
- 2024-2025学年四年级英语上学期期末素养测评试卷(北京版)基础卷02(含解析)
- 某制药企业药品召回规范
- 2025年春小学外研版(三起)三年级英语下册期末模拟卷
- 校外培训机构风险分级分类管控方案
- 2026下半年上海杨浦区卫健系统事业单位公开招聘93名专业技术人员笔试参考题库及答案详解
- 2026下半年四川成都市大邑县教育系统招聘编外教师教师146人笔试题库附答案详解(轻巧夺冠)
- ×××信息化项目验收报告
- 宁德市福安市2026学年数学三年级下学期期末综合测试试题(含答案)
- GA/T 1043-2025智能交通管理系统前端设备运行维护规范
- 2026年北京市海淀区八年级政治下册期末考试试卷及答案
- 2025年中国陶粒支撑剂市场调查研究报告
- 2026-2030中国无缝钛管行业现状规模与前景趋势研究报告
- 2026贵州航天医院助理全科医生(西医)培训招录25人备考题库及答案详解(基础+提升)
- 2026年茶艺师知识试题及答案
评论
0/150
提交评论