String(byte[] bytes, Charset charset) 和 getBytes() 使用
转自:https://techbirds.iteye.com/blog/1855960
@Test
public void testBytes(){
//字节数
//中文:ISO:1 GBK:2 UTF-8:3
//数字或字母: ISO:1 GBK:1 UTF-8:1
String username = "中";
try {
//得到指定编码的字节数组 字符串--->字节数组
byte[] u_iso=username.getBytes("ISO8859-1");
byte[] u_gbk=username.getBytes("GBK");
byte[] u_utf8=username.getBytes("utf-8");
System.out.println(u_iso.length);
System.out.println(u_gbk.length);
System.out.println(u_utf8.length);
//跟上面刚好是逆向的,字节数组---->字符串
String un_iso=new String(u_iso, "ISO8859-1");
String un_gbk=new String(u_gbk, "GBK");
String un_utf8=new String(u_utf8, "utf-8");
System.out.println(un_iso);
System.out.println(un_gbk);
System.out.println(un_utf8);
//有时候必须是iso字符编码类型,那处理方式如下
String un_utf8_iso=new String(u_utf8, "ISO8859-1");
//将iso编码的字符串进行还原
String un_iso_utf8=new String(un_utf8_iso.getBytes("ISO8859-1"),"UTF-8");
System.out.println(un_iso_utf8); } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
测试结果:
1
2
3
?
中
中
ä¸
中
从转载的文章摘:
乱码原因:为什么使用ISO8859-1编码再组合之后,无法还原"中"字呢,其实原因很简单,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1");来得到正确的"中"字在ISO8859-1中的编码值了,所以再通过new String()来还原就无从谈起了.
有时候,为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,如:
String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1"),这样得到的s_iso8859-1字符串实际是三个在ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")来得到正确的中文汉字"中".这样就既保证了遵守协议规定、也支持中文.
String(byte[] bytes, Charset charset) 和 getBytes() 使用的更多相关文章
- 关于java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)
public byte[] getBytes(Charset charset) Encodes this String into a sequence of bytes using the given ...
- 用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题
Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使 ...
- String(byte[] bytes, String charsetName)
String str = new String("时之沙"); byte bytes[] = str.getBytes("GBK"); byte byte2[] ...
- InputStream转换为String, byte[] data = new byte[1024]详解
/** * This file created at 2018年2月28日. * * Copyright (c) 2002-2018 Bingosoft, Inc. All rights reserv ...
- byte[] bytes和string转换
public static string ToHexString ( byte[] bytes ) // 0xae00cf => "AE00CF " { ...
- String和bytes的编码转换
import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; /** * @author 作者 E-mai ...
- String Byte 互转
string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]转成string: ...
- C# string byte[] Base64 常用互相转换
参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver ...
- java中String\十六进制String\byte[]之间相互转换函数
java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */ pu ...
随机推荐
- hdu2176nim博弈
就是要搞清楚nim博弈的原理 特别是证明方法,这一题就是第二条证明方法得出来的结论,只要a[i]^k<a[i]输出就行了 证明如下: 根据定义,证明一种判断position的性质的方法的正确性, ...
- SpringMVC中的参数绑定总结
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springm ...
- 最小生成树prim和kruskal模板
prim: int cost[MAX_V][MAX_V]; //cost[u][v]表示边e=(u,v)的权值(不存在的情况下设为INF) int mincost[MAX_V]; //从集合X出发的每 ...
- MMAP文件内存映射
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- js 的各种排序算法 -- 待续
链接 function quickSort(arr,l,r){ if(l < r){ var i = l, j = r, x = arr[i]; while(i<j){ while(i&l ...
- es6 中的generator函数控制流程
Generator函数跟普通函数的写法有非常大的区别: 一是,function关键字与函数名之间有一个星号: 二是,函数体内部使用yield语句,定义不同的内部状态(yield在英语里的意思就是“产出 ...
- CS231n课程笔记翻译6:神经网络笔记 part1
译者注:本文智能单元首发,译自斯坦福CS231n课程笔记Neural Nets notes 1,课程教师Andrej Karpathy授权翻译.本篇教程由杜客翻译完成,巩子嘉和堃堃进行校对修改.译文含 ...
- Ubuntu下MySQL数据库文件 物理迁移后 出现的问题
参考资料: https://www.cnblogs.com/advocate/archive/2013/11/19/3431606.html 本文要解决的一个问题是数据库文件进行物理迁移时遇到的问题. ...
- Codeforces 165 E. Compatible Numbers【子集前缀和】
LINK 题目大意 给你一个数组,问你数组中的每个数是否可以在数组里面找到一个数和他and起来是0,如果可以就输出这个数,否则就输出-1 思路 首先很显然的是可以考虑找到每个数每一位都取反的数的子集 ...
- WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项 ...