String byte[]

java中string与byte[]的转换


2012-07-06 09:55:47|  分类: java |  标签:java  string  byte  转换  乱码  |举报|字号 订阅

1.string 转 byte[]

byte[] midbytes=isoString.getBytes("UTF8");

//为UTF8编码

byte[] isoret = srt2.getBytes("ISO-8859-1");

//为ISO-8859-1编码

其中ISO-8859-1为单字节的编码

2.byte[]转string

String isoString = new String(bytes,"ISO-8859-1");

String srt2=new String(midbytes,"UTF-8");

说明:

在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。

将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。

下面举个例子:

我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。

发送端:

String sendString="发送数据";

byte[]
sendBytes= sendString .getBytes("UTF8");

.......socket发送

接受端:

String recString=new
String( sendBytes ,"UTF-8");

但是,这里往往又会出现这样一个问题。就是想要发送的数据本身就是byte[]类型的。

如果将其通过UTF-8编码转换为中间件String类型就会出现问题

如:

byte[] bytes = new byte[] { 50, 0, -1, 28, -24 };

String sendString=new String(  bytes ,"UTF-8");

byte[] sendBytes= sendString .getBytes("UTF8");

然后再发送

接受时进行逆向转换

String recString=new String( sendBytes ,"UTF-8");

byte[] Mybytes=isoString.getBytes("UTF8");

这时Mybytes中的数据将是[50, 0, -17, -65, -67, 28, -17, -65, -67]

因此,需要采用单字节的编码方式进行转换

String sendString=new
String(  bytes ,"UTF-8");
  改为       String
sendString=new
String(  bytes ,"ISO-8859-1" );

byte[] Mybytes=isoString.getBytes("UTF8");  改为
  byte[]
Mybytes=isoString.getBytes(  "ISO-8859-1" );

这样所需要的字节就有恢复了。

String byte[],布布扣,bubuko.com

时间: 2024-10-20 22:40:29

String byte[]的相关文章

用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使用的unicode版本是UCS-2,就是使用2个字节表示一个字符的unicode版本,这就对上了,java使用的就是UCS-2标准,所以,String中的value中存储的都是一个个数字 比如’你’的unicode编码是4f60,看下面的测试代码 char c = '你'; System.out.p

C# string byte转换

C# string byte数组转换之string类型转成byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); 反过来,byte[]转成string:string str = System.Text.Encoding.Default.GetString ( byteArray ); 其它编码方式的,如System.Text.UTF8Encoding,System.Text.UnicodeEncoding

InputStream转换为String, byte[] data = new byte[1024]详解

/** * This file created at 2018年2月28日. * * Copyright (c) 2002-2018 Bingosoft, Inc. All rights reserved. */ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.

python unicode和string byte

python unicode 和string那?? 开发过程中总是会碰到string, unicode, ASCII, 中文字符等编码的问题, 每次碰到都要现搜, 很是浪费时间, 于是这次狠下心, 一定要搞清楚python 的string和Unicode到底怎么回事. 基础知识 我们都知道计算机只认0和1, 要想在计算机显示26个字母, 就要给他们一套映射规则: 计算机能认得的符号 --> 人类可读的符号. 这转换的过程就是一套编码规则. 字符集: 就是一套字符的集合(比如中文4000个汉字集合

[技巧篇]19.InputStream与String,Byte之间互转[转载]

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * @see InputStream转化为String String 转换为InputStream InputStream 转化为byte数组 byte转化为InputStream byte转化为String * @author

java中String byte HexString的转换

原文:http://blog.sina.com.cn/s/blog_62e9ec530101ebv6.html HexString——>byte public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length

C# string byte[] Base64 常用互相转换

参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver54/p/3430956.html http://www.cnblogs.com/simhare/archive/2007/07/18/821938.html 定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.E

java中String\十六进制String\byte[]之间相互转换函数

java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */ public static byte[] hexStringToByte(String hex) { int len = (hex.length() / 2); byte[] result = new byte[len]; char[] achar = hex.toCharArray(); for (i

InputStream与String,Byte之间互转

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * * @author Andy.Chen * @mail [email protected] * */ public class InputStreamUtils { final static int BUFFER_SIZE =