Java字符转码
来源:互联网 发布:java string 去掉空格 编辑:程序博客网 时间:2024/06/04 03:49
今天在Android使用EditText打开文本文件时使用了字符地转码。
这里有两个函数:
1:解码
String test = "中文";
<span style="font-family: Arial, Helvetica, sans-serif;"> byte[] iso = test.getBytes("ISO8859-1");</span>
test.getBytes(encoding)就是将test的字符串以encoding的编码形式转换为字节
2:识别
String iso_iso = new String(iso, "ISO8859-1");new String(ISO,encoding)这个与上个相反,将ISO这个字节转换为以encoding编码形式转换为字符串
例:
String test = "中文";<span style="white-space:pre"></span> try {<span style="white-space:pre"></span> // 解码:将字符串以指定指定编码转换为字节<span style="white-space:pre"></span> byte[] iso = test.getBytes("ISO8859-1");<span style="white-space:pre"></span> byte[] gbk = test.getBytes("GBK");<span style="white-space:pre"></span> byte[] utf8 = test.getBytes("UTF-8");<span style="white-space:pre"></span> System.out.println("使用ISO解码: "+iso);<span style="white-space:pre"></span> System.out.println("使用GBK解码: " +gbk);<span style="white-space:pre"></span> System.out.println("使用UTF解码: " +utf8);<span style="white-space:pre"></span> // 组装识别:将字节以指定编码转换为字符串<span style="white-space:pre"></span> String iso_iso = new String(iso, "ISO8859-1");<span style="white-space:pre"></span> String gbk_gbk = new String(gbk, "GBK");<span style="white-space:pre"></span> String utf_utf = new String(utf8, "UTF-8");<span style="white-space:pre"></span> System.out.println("使用ISO解码后再用ISO识别: " + iso_iso);<span style="white-space:pre"></span> System.out.println("使用GBK解码后再用GBK识别: " + gbk_gbk);<span style="white-space:pre"></span> System.out.println("使用UTF解码后再用UTF识别: " + utf_utf); <span style="white-space:pre"></span> } catch (UnsupportedEncodingException e) {<span style="white-space:pre"></span> e.printStackTrace();<span style="white-space:pre"></span> }
注意:我们发现使用ISO解码后再编码就无法显示了,这是因为ISO属于单字节编码,最多能表示的字符范围是0-255,应用于英文系列。无法表示中文字符。所以无法通过ISO得到字符串的编码字节了。
但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用iso8859-1编码来表示。而且在很多协议上,默认使用该编码。
那么应该怎么办?
4步即可:
1.GBK解码
2.ISO识别
3.ISO解码
4.GBK识别
当然,不使用GBK而用UTF也是可以的,
1.UTF解码
2.ISO识别
3.ISO解码
4.UTF识别
只要使用其他含有中文字符的编码解码,在由ISO识别。之后反向解码识别就可以
byte[] utf8 = test.getBytes("UTF-8"); String t_utf8Toiso = new String(gbk, "ISO8859-1"); String ut_utf8Toiso = new String(t_utf8Toiso.getBytes("ISO8859-1"),"GBK"); System.out.println("utf解码后ISO识别" + t_utf8Toiso); System.out.println("utf解码后ISO识别,ISO解码UTF识别" + ut_utf8Toiso);
这样就可以了
0 0
- java字符转码
- Java字符转码
- Java字符转码
- Java-字符转码
- java字符转码
- java中文字符转码的思考
- java 字符操作及转码
- Java--中文字符转GBK码
- java字符转码:三种方法
- java字符转码:三种方法
- java字符转码:三种方法
- java:string2hexString 中文字符转码问题解决
- java字符编码[转]
- java转义字符【转】
- java字符转十六进制
- Java数字转字符
- java 全角字符转半角字符
- java 全角字符转半角字符
- java基础--javascrip
- JAVA 运算符
- 【iOS开发】事件处理之响应链(二)
- z-index学习
- mysql校对规则(COLLATION)详解
- Java字符转码
- Hibernate使用注解映射取代映射文件
- hdu 1005 Number Sequence(循环节)
- LINK 标签操作
- [转]大型网站架构系列:电商网站架构案例(2)
- iOS - 深入探究Block循环引用
- Nginx 配置
- 【心酸历程】atom上打造C/C++的ide
- java,lang.Void类