还有能不能给一个具体的转换的方法,数字、字母、汉字都适用的。
13 个解决方案
#1
byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
#2
对,你要搞清楚什么编码。因为字符串本身并不包含编码信息,所以字节-字符串-字节这个转换无法做到还原。
#3
有些编码格式,1个字符转换后占两个字节,有些占4个字节。
我用A编码格式转换成的字节数组,你用B编码格式来转成字符串,就会产生乱码
我用A编码格式转换成的字节数组,你用B编码格式来转成字符串,就会产生乱码
#4
string = Convert.ToBase64String(byte[]);
byte[] = Convert.FromBase64String(string);
byte[] = Convert.FromBase64String(string);
#5
编码方式的问题吧
#6
这种方法我用了之后就出现问题了,有时候前后长度不等
#7
因为计算机上通常用来处理的字符串是Unicode编码的,当转化成其他格式的编码后,Byte数组的长度自然和Unicode的不相同了吧
#8
什么长度不等?
#9
这种方法我用了之后就出现问题了,有时候前后长度不等 byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
什么长度不等?
#10
数组长度不等 这种方法我用了之后就出现问题了,有时候前后长度不等 byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
什么长度不等?
这种为什么需要他的长度呢··我晕··
#11
只需要记住一点,encoding.getbytes encoding.tostring的时候,必须用同一种encoding就不会有错
#12
只需要记住一点,encoding.getbytes encoding.tostring的时候,必须用同一种encoding就不会有错
是有问题的,我遇到了楼主一样的情况
做签名时生成的字节数组,128位,然后转成了string,这个时候再用同一种encoding转出字节数组的时候发现长度已经发生了变化。用gb2312时转出的长度是116,用utf-8转出的是246,希望有人能知道为什么会这样。
貌似java并没有这种问题
#13
用4楼的方法是可行的
#1
byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
#2
对,你要搞清楚什么编码。因为字符串本身并不包含编码信息,所以字节-字符串-字节这个转换无法做到还原。
#3
有些编码格式,1个字符转换后占两个字节,有些占4个字节。
我用A编码格式转换成的字节数组,你用B编码格式来转成字符串,就会产生乱码
我用A编码格式转换成的字节数组,你用B编码格式来转成字符串,就会产生乱码
#4
string = Convert.ToBase64String(byte[]);
byte[] = Convert.FromBase64String(string);
byte[] = Convert.FromBase64String(string);
#5
编码方式的问题吧
#6
byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
#7
因为计算机上通常用来处理的字符串是Unicode编码的,当转化成其他格式的编码后,Byte数组的长度自然和Unicode的不相同了吧
#8
这种方法我用了之后就出现问题了,有时候前后长度不等 byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
什么长度不等?
#9
这种方法我用了之后就出现问题了,有时候前后长度不等 byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
什么长度不等?
#10
数组长度不等 这种方法我用了之后就出现问题了,有时候前后长度不等 byte[] bs = Encoding.UTF8.GetBytes("你的字符串");
string str = Encoding.UTF8.GetString(bs);
什么长度不等?
这种为什么需要他的长度呢··我晕··
#11
只需要记住一点,encoding.getbytes encoding.tostring的时候,必须用同一种encoding就不会有错
#12
只需要记住一点,encoding.getbytes encoding.tostring的时候,必须用同一种encoding就不会有错
是有问题的,我遇到了楼主一样的情况
做签名时生成的字节数组,128位,然后转成了string,这个时候再用同一种encoding转出字节数组的时候发现长度已经发生了变化。用gb2312时转出的长度是116,用utf-8转出的是246,希望有人能知道为什么会这样。
貌似java并没有这种问题
#13
用4楼的方法是可行的