java ansi编码转换(Java中如何将gbk装换为ansi)

本文目录
- Java中如何将gbk装换为ansi
- 在Java中如何将字符转换成ASCII码
- 急!急!JAVA中ASCII转码问题
- java中 怎么把 ascii码转换为 十六进制
- JAVA里的编码转换,懂的进来看看!!!!!
Java中如何将gbk装换为ansi
对于java,在字符集间进行转换时比较常用的功能,尤其在web应用中。
首先我们要先了解一些知识点:
一、关键技术点:
1、当前流行的字符编码格式有:US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16、GBK、GB2312等,其中GBK、GB2312是专门处理中文编码的。
2、String的getBytes方法用于按指定编码获取字符串的字节数组,参数指定了解码格式,如果没有指定解码格式,则按系统默认编码格式。
3、String的“String(bytes bs, String charset)”构造方法用于把字节数组按指定的格式组合成一个字符串对象
二、下面是一个完整的例子,包括了你提问中的gbk转ascii,同时也提供了一些其他字符集间的转码方式,可留存备查:
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final String US_ASCII = "US-ASCII";
/** ISO拉丁字母表 No.1,也叫做ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** 8 位 UCS 转换格式 */
public static final String UTF_8 = "UTF-8";
/** 16 位 UCS 转换格式,Big Endian(最低地址存放高位字节)字节顺序 */
public static final String UTF_16BE = "UTF-16BE";
/** 16 位 UCS 转换格式,Litter Endian(最高地址存放地位字节)字节顺序 */
public static final String UTF_16LE = "UTF-16LE";
/** 16 位 UCS 转换格式,字节顺序由可选的字节顺序标记来标识 */
public static final String UTF_16 = "UTF-16";
/** 中文超大字符集 **/
public static final String GBK = "GBK";
public static final String GB2312 = "GB2312";
/** 将字符编码转换成US-ASCII码 */
public String toASCII(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, US_ASCII);
}
/** 将字符编码转换成ISO-8859-1 */
public String toISO_8859_1(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, ISO_8859_1);
}
/** 将字符编码转换成UTF-8 */
public String toUTF_8(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_8);
}
/** 将字符编码转换成UTF-16BE */
public String toUTF_16BE(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16BE);
}
/** 将字符编码转换成UTF-16LE */
public String toUTF_16LE(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16LE);
}
/** 将字符编码转换成UTF-16 */
public String toUTF_16(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16);
}
/** 将字符编码转换成GBK */
public String toGBK(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, GBK);
}
/** 将字符编码转换成GB2312 */
public String toGB2312(String str) throws UnsupportedEncodingException {
return this.changeCharset(str,GB2312);
}
/**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param newCharset 目标编码
*/
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用默认字符编码解码字符串。与系统相关,中文windows默认为GB2312
byte bs = str.getBytes();
return new String(bs, newCharset); //用新的字符编码生成字符串
}
return null;
}
/**
* 字符串编码转换的实现方法
* @param str 待转换的字符串
* @param oldCharset 源字符集
* @param newCharset 目标字符集
*/
public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用源字符编码解码字符串
byte bs = str.getBytes(oldCharset);
return new String(bs, newCharset);
}
return null;
}
public static void main(String args) throws UnsupportedEncodingException {
ChangeCharset test = new ChangeCharset();
String str = "This is a 中文的 String!";
System.out.println("str:" + str);
String gbk = test.toGBK(str);
System.out.println("转换成GBK码:" + gbk);
System.out.println();
String ascii = test.toASCII(str);
System.out.println("转换成US-ASCII:" + ascii);
System.out.println();
String iso88591 = test.toISO_8859_1(str);
System.out.println("转换成ISO-8859-1码:" + iso88591);
System.out.println();
gbk = test.changeCharset(iso88591, ISO_8859_1, GBK);
System.out.println("再把ISO-8859-1码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf8 = test.toUTF_8(str);
System.out.println();
System.out.println("转换成UTF-8码:" + utf8);
String utf16be = test.toUTF_16BE(str);
System.out.println("转换成UTF-16BE码:" + utf16be);
gbk = test.changeCharset(utf16be, UTF_16BE, GBK);
System.out.println("再把UTF-16BE编码的字符转换成GBK码:" + gbk);
System.out.println();
String utf16le = test.toUTF_16LE(str);
System.out.println("转换成UTF-16LE码:" + utf16le);
gbk = test.changeCharset(utf16le, UTF_16LE, GBK);
System.out.println("再把UTF-16LE编码的字符串转换成GBK码:" + gbk);
System.out.println();
String utf16 = test.toUTF_16(str);
System.out.println("转换成UTF-16码:" + utf16);
String gb2312 = test.changeCharset(utf16, UTF_16, GB2312);
System.out.println("再把UTF-16编码的字符串转换成GB2312码:" + gb2312);
}
}
在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转码问题
看了几位的回答,感觉有点好笑,楼主本身就出了一个假命题,几位回答都没有弄清字符集的转换,楼主也不知道自己本身就犯了一个致命错误,“你好”本身就是一个多位编码,你却硬要用低位码去解码,不出错才怪呢?
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编码转换过来,然后再用正则表达式看看网页头部,如:
***隐藏网址***
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才能完美转换成其他编码。
java中 怎么把 ascii码转换为 十六进制
我刚好写了
public static String ASCII2HEX(String ASCII2HEX_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里的编码转换,懂的进来看看!!!!!
c:\Java\jdk1.6.0_05\bin中有个native2ascii.exe文件就是了
使用:在这个bin文件夹中有a.txt它的内容是汉字“你好”,在DOS提示符(环境变量要配置)或者进入bin目录下输入 native2ascii a.txt b.txt
然后bin文件夹里就生成b.txt,打开b.txt你会看到/u4f60/u597d
反过来就是Unicode转汉字

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30




