
String s = new String(byte[] b);就得到一个汉字了。
如果出来的汉字有乱码,可以设置编码:String s = new String(byte[] b,String charset);
public class Demo
{
public static void main(String[] args)
{
String str="例子";
//数组bm保存的就是"例子"的Unicode代码点(10进制)
int[] bm=new int[strlength()];
for(int i=0;i<strlength();i++)
{
bm[i]=strcodePointAt(i);
Systemoutprint(""+bm[i]+" ");
}
}
}
1、获取到待转换的字节数组值
2、确定字节数组转成String的字符编码
3、利用String的构造方法,传入字节数组作为参数,构造新的String。
示例:
byte[] byteArr = new byte[1024];
String s = new String(byteArr, "UTF-8");
您好,提问者:
确实是不一样的,这个时候给你一种也可用于net对接的加密:
/加密方法
@param str
@return
/
public static String encode(String str){
//根据默认编码获取字节数组
byte[] bytes=strgetBytes();
StringBuilder sb=new StringBuilder(byteslength2);
//将字节数组中每个字节拆解成2位16进制整数
for(int i=0;i<byteslength;i++) {
sbappend(hexStringcharAt((bytes[i]&0xf0)>>4));
sbappend(hexStringcharAt((bytes[i]&0x0f)>>0));
}
return sbtoString();
}
/
得到16进制的GBK编码,转换为汉字
@param hexStr
@return
/
public static String decode(String hexStr){
if( null==hexStr || ""equals(hexStr) || (hexStrlength())%2 != 0 ) {
return null;
}
int byteLength = hexStrlength() / 2;
byte[] bytes=new byte[ byteLength ];
int temp=0;
for(int i=0;i<byteLength;i++) {
temp = hex2Dec(hexStrcharAt(2i))16+hex2Dec(hexStrcharAt(2i+1));
bytes[i]=(byte)( temp<128 temp : temp-256 ) ;
}
return new String(bytes);
}
private static String hexString="0123456789ABCDEF";
private static int hex2Dec(char ch){
if(ch == '0')
return 0;
if(ch == '1')
return 1;
if(ch == '2')
return 2;
if(ch == '3')
return 3;
if(ch == '4')
return 4;
if(ch == '5')
return 5;
if(ch == '6')
return 6;
if(ch == '7')
return 7;
if(ch == '8')
return 8;
if(ch == '9')
return 9;
if(ch == 'a')
return 10;
if(ch == 'A')
return 10;
if(ch == 'B')
return 11;
if(ch == 'b')
return 11;
if(ch == 'C')
return 12;
if(ch == 'c')
return 12;
if(ch == 'D')
return 13;
if(ch == 'd')
return 13;
if(ch == 'E')
return 14;
if(ch == 'e')
return 14;
if(ch == 'F')
return 15;
if(ch == 'f')
return 15;
else return -1;
}
跟编码有关。试试有结论再告诉你。
1、跟Eclipse的编码设定有关。具体路径:Windows->Preferences->General->Workspace中有一个设定项为“Text file encoding”,这个选项指定了保存源码时使用的编码方式。我看了一下在Window下选项为Default(GBK),Linux下该选项为Default(UTF-8),编码方式的不同,决定了“我是中国人”转换成Byte数据不同。这就是为什么在Window下和在Linux下不同结果的原因。
2、在Linux环境下,通过修改上述设定项为Other: GBK,可以得到和Window下的同样效果。修改后的设定截图如下:
PHP中的汉字部分是由文件的编码决定的。或者说目前PHP的字符串不支持汉字,把汉字看成字节原封不动的输出。Java的字符串支持汉字,要另外注意编码。比如PHP使用GBK编码的文件和java通讯时,Java的字符串就要strgetBytes("GBK");转成字节后参与编码。
另外要注意PHP的MCrypt库没有预置补齐函数和键的处理函数,
PHP在AES编码前,要写好和Java一致的,对键和数据进行相应的补齐和处理。
比如Java的AES/CBC/PKCS5Padding 方式,PHP中就要手工写一个PKCS7补齐的方法,
才可能和Java通讯。
以上就是关于java中的String的getBytes()方法可以获取3个byte,那么如果知道3个byte,如何得到一个字符串汉字呢全部的内容,包括:java中的String的getBytes()方法可以获取3个byte,那么如果知道3个byte,如何得到一个字符串汉字呢、java中如何取得中文如“中国”在unicode编码中的表示串、字节数组怎么转string等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)