❶ 急!急!java中ASCII转码问题
看了几位的回答,感觉有点好笑,楼主本身就出了一个假命题,几位回答都没有弄清字符集的转换,楼主也不知道自己本身就犯了一个致命错误,“你好”本身就是一个多位编码,你却硬要用低位码去解码,不出错才怪呢?
String s1 =new String(chinaString.getBytes("gb2312"),"ISO-8859-1");
这里的gb2312可以省略,系统会默认用你控制面板设定好的字符集,因为原来“你好”是多位编码,所以必须用多位编码去解码,也就是gb2312或utf-8去解码,这样chinaString.getBytes("gb2312")就变成一个byte数组,这时候你可以随意重新指定编码如iso-8859-1,这是s1就变成一个是iso-8859-1编码的字符串,如果你想重新转为中文,那么,你用什么字符集编码的,必须用什么字符集来解码,这里是iso-8859-1,可以这么来做
String s2 = new String(s1.getBytes("ISO-8859-1"),"gb2312");
这样s2又重新变回中文了,所以当你打印s2时,就是“你好”。
还有一个问题,为什么这里用iso-8859-1来重新编码,而不用其他的字符集呢?这里因为,其他字符集无法相互转码而发生编码丢失现象,你可以试试,把iso-8850-1换成utf-8试试,这无法重新转回来,这导致乱码现象,如果你ios-8850-1换成gbk,大部分是可以的,因为gbk兼容gb2312,但是,不是所有的都能相互转回来,最好用iso-8850-1来作为中间转码字符集,这是因为所有的字符集都对iso-8859-1兼容,不管是gbk还是gb2312,utf-8,都能完美地转换回来。
说了这么多,可能大家还有点迷糊,这应用在什么地方。我举个例子,大家知道,经常有人做网络爬虫,把网页下载下来,但是,网页编码各种各样,主要有iso-8859-1,gbk,gb2312,utf-8,网页以io字节流下载下来,要想把它转换字符流,也就是文字,这时候要知道编码是什么。怎么办呢?这样做,不管它,首先以iso-8859-1编码转换过来,然后再用正则表达式看看网页头部,如:
<meta content="text/html; charset=gb2312" http-equiv="Content-Type">,这时就知道这个网页的编码是gb2312,再利用这个式子
String s2 = new String(s1.getBytes("ISO-8859-1"),"gb2312");
s2就能正确显示网页内容。假如你用其他字符集如utf-8作为中间码,也能知道网页编码是gb2312,但这是你用式子
String s2 = new String(s1.getBytes("utf-8"),"gb2312"),就会出现乱码现象,所以最好用iso-8859-1作为中间码。
所以,楼主除了犯以上错误以外,还有,就不应该用US-ASCII作为中间码,否则,是不能转换为中文的,它们之间无法做到相互转换,只有iso-8859-1才能完美转换成其他编码。
❷ 字符和ASCII码相互转换(java编程)
使用强制转换,'1'--->(byte)'1'即是ascii,要十六进制,就用String.format("%02X",(byte)'1');
System.out.println("'1'ASCII="+((byte)'1'));
System.out.printf("'1'ASCII hex=%02X\n",(byte)'1');
//............
System.out.println("40->"+((char)40) );
System.out.println("59->"+((char)59) );
//..............
System.out.println("0x40->"+((char)0x40) );
//.................
❸ java中 怎么把 ascii码转换为 十六进制
我刚好写了
publicstaticStringASCII2HEX(StringASCII2HEX_STRING){
switch(ASCII2HEX_STRING){
case"NUL":
return"00";
case"SOH":
return"01";
case"STX":
return"02";
case"ETX":
return"03";
case"EOT":
return"04";
case"ENQ":
return"05";
case"ACK":
return"06";
case"BEL":
return"07";
case"BS":
return"08";
case"HT":
return"09";
case"LF":
return"0A";
case"VT":
return"0B";
case"FF":
return"0C";
case"CR":
return"0D";
case"SO":
return"0E";
case"SI":
return"0F";
case"DLE":
return"10";
case"DC1":
return"11";
case"DC2":
return"12";
case"DC3":
return"13";
case"DC4":
return"14";
case"NAK":
return"15";
case"SYN":
return"16";
case"ETB":
return"17";
case"CAN":
return"18";
case"EM":
return"19";
case"SUB":
return"1A";
case"ESC":
return"1B";
case"FS":
return"1C";
case"GS":
return"1D";
case"RS":
return"1E";
case"US":
return"1F";
case"SP":
return"20";
case"!":
return"21";
case"\":
return"22";
case"#":
return"23";
case"$":
return"24";
case"%":
return"25";
case"&":
return"26";
case"'":
return"27";
case"(":
return"28";
case")":
return"29";
case"*":
return"2A";
case"+":
return"2B";
case",":
return"2C";
case"_":
return"2D";
case".":
return"2E";
case"/":
return"2F";
case"0":
return"30";
case"1":
return"31";
case"2":
return"32";
case"3":
return"33";
case"4":
return"34";
case"5":
return"35";
case"6":
return"36";
case"7":
return"37";
case"8":
return"38";
case"9":
return"39";
case":":
return"3A";
case";":
return"3B";
case"<":
return"3C";
case"=":
return"3D";
case">":
return"3E";
case"?":
return"3F";
case"@":
return"40";
case"A":
return"41";
case"B":
return"42";
case"C":
return"43";
case"D":
return"44";
case"E":
return"45";
case"F":
return"46";
case"G":
return"47";
case"H":
return"48";
case"I":
return"49";
case"J":
return"4A";
case"K":
return"4B";
case"L":
return"4C";
case"M":
return"4D";
case"N":
return"4E";
case"O":
return"4F";
case"P":
return"50";
case"Q":
return"51";
case"R":
return"52";
case"S":
return"53";
case"T":
return"54";
case"U":
return"55";
case"V":
return"56";
case"W":
return"57";
case"X":
return"58";
case"Y":
return"59";
case"Z":
return"5A";
case"[":
return"5B";
case""":
return"5C";
case"]":
return"5D";
case"↑":
return"5E";
case"←":
return"5F";
case"`":
return"60";
case"a":
return"61";
case"b":
return"62";
case"c":
return"63";
case"d":
return"64";
case"e":
return"65";
case"f":
return"66";
case"g":
return"67";
case"h":
return"68";
case"i":
return"69";
case"j":
return"6A";
case"k":
return"6B";
case"l":
return"6C";
case"m":
return"6D";
case"n":
return"6E";
case"o":
return"6F";
case"p":
return"70";
case"q":
return"71";
case"r":
return"72";
case"s":
return"73";
case"t":
return"74";
case"u":
return"75";
case"v":
return"76";
case"w":
return"77";
case"x":
return"78";
case"y":
return"79";
case"z":
return"7A";
case"{":
return"7B";
case"|":
return"7C";
case"}":
return"7D";
case"~":
return"7E";
case"DEL":
return"7F";
default:
return"";
}
}
❹ JAVA把ASCII码转变为字符串
publicclassTTTTT{
publicstaticvoidmain(String[]args){
Stringstring="1041011081123210910133";
System.out.println(asciiToString(string));
}
(Stringtext){
StringBuilderbuilder=newStringBuilder();
for(inti=0;i<text.length();i++){
if(text.charAt(i)<='2'&&i<=text.length()-3){
intcode=Integer.parseInt(text.substring(i,i+3));
builder.append((char)code);
i+=2;
}else{
intcode=Integer.parseInt(text.substring(i,i+2));
builder.append((char)code);
i+=1;
}
}
returnbuilder.toString();
}
}
你这编码很怪啊,结果竟然是help me!
1041011081123210910133
解析起来很麻烦那,不是3位3位的。
104
101
108
112
32
109
101
33
❺ 在Java中如何将字符转换成ASCII码
java中如何将一个字符转换为ascii码:
方法1:
char c = 'a ';
byte b =(byte)c;
方法2:
直接将这个字符转化为int型就可以得到ascii码值
char c = 'a ';
int b = c; //字符的ascii码值
同理将一个ascii码转换为相应的字符:
例如:字符a
int d = 97;
char e = (char)d;
❻ java中 怎么把 ascii码转换为 十六进制
使用这个方法可以传进去的16进制的数字组成的字符串转化为utf-8格式的字符串
public static String toStringHex1(String s) {
byte[] baKeyword = new byte[s.length() / 2];
for (int i = 0; i < baKeyword.length; i++) {
try {
baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(
i * 2, i * 2 + 2), 16));
} catch (Exception e) {
e.printStackTrace();
}
}
try {
s = new String(baKeyword, "utf-8");// UTF-16le:Not
} catch (Exception e1) {
e1.printStackTrace();
}
return s;
}
追问
我要ASCII格式的字符串,有吗,谢了。
追答
那就修改s = new String(baKeyword, "ASCII")这一行就行了,后面的表示要转化的编码格式可以选很多种,以下是你要的代码
public static String toStringHex1(String s) {
byte[] baKeyword = new byte[s.length() / 2];
for (int i = 0; i < baKeyword.length; i++) {
try {
baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(
i * 2, i * 2 + 2), 16));
} catch (Exception e) {
e.printStackTrace();
}
}
try {
s = new String(baKeyword, "ASCII");
} catch (Exception e1) {
e1.printStackTrace();
}
return s;
}
❼ Java中,如何把ascii码转换成字符
如果是单个字符的话,直接转换就可以
intd=97;
chare=(char)d;
如果是一串ascii码的话,最好存在byte[]中
byte[]b={97,98,99};
System.out.println(newString(b));