「java字符串编码转换」Java字符串转码

博主:adminadmin 2022-11-25 16:23:08 188

本篇文章给大家谈谈java字符串编码转换,以及Java字符串转码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么把utf-8的字符串转换为gb2312格式

Java中字符串转码,根据实际运用的环境有以下三种方式

1、使用Java.lang.String

这是最常用的方法,先用对应编码获取字节,然后重新构造新编码,示例代码如下:

String s = "清山";  

byte[] b = s.getBytes("utf-8");//编码  

String sa = new String(b, "gb2312");//解码:用什么字符集编码就用什么字符集解码

2、java.io.InputStreamReader/OutputStreamWriter:桥转换

读写文件的应用中,可以使用这种方式,直接在IO流构造中转换,示例代码如下:

InputStream is = new FileInputStream("C:/项目进度跟踪.txt");//文件读取  

InputStreamReader isr = new InputStreamReader(is, "utf-8");//解码  

OutputStream os = new FileOutputStream("C:/项目进度跟踪_gb2312.txt");//文件输出  

OutputStreamWriter osw = new OutputStreamWriter(os, "gb2312");//开始编码

3、java.nio.Charset

使用nio中的Charset转换字符,示例代码如下:

Charset inSet = Charset.forName("utf-8");  // 解码字符集 

Charset outSet = Charset.forName("gb2312");  // 编码字符集  

CharsetDecoder de = inSet.newDecoder();  // 解码器

CharsetEncoder en = outSet.newEncoder();// 编码

Java中如何把GBK编码的字符串转成utf-8编码

我先解释一下我对你的问题的理解

你的问题有点笼统

可以这么理解两个意思

,你是想吧一个gbk编码的字符串用utf-8格式来编码

String

s

=

new

String

("全国".getBytes("GBK"),"GBK");

虽然这个时候的s是GBK编码的

但是s还是中文字符的

所以

上面这位同胞用

new(s.getBytes("GBK"),"UTF-8")的方式肯定是错的

应该用

String

s1

=

new

String

(s.getBytes("UTF-8"),"UTF-8")

这样s1就是UTF-8编码的字符串了

二,如果是遇见乱码问题

比如

String

s

=

new

String

("全国".getBytes("GBK"),"GBK");

这样的s就是gbk编码的

现在你要把GBK格式的编码用UTF-8去编码

肯定就会出现乱码

String

s2

=

new

String(s.getBytes("GBK"),"UTF-8");

这个s2肯定是乱码的

而且这样就根本解不出来了

系统出现的乱码显示的时候才会出现编码错误

所以

一般出现乱码

只要把输入流换个编码解析一下就ok了

还有什么不明白

可以问我

请问java如何改变字符串的编码方式

byte[] b=string.getBytes("GB2312");//使用GB2312编码方式对字符串string进行编码

//这时要想将字节数组b的内容正确解码只能使用GB2312的编码方式进行解码,即

String str=new String(b,"GB2312");//这里若使用UTF-8编码方式来进行解码就会乱码

//将eclipse默认的编码方式改为UTF-8,只是用该编码方式对.java源文件进行编码保存

//这个对new String(string.getBytes("GB2312"),"UTF-8")没啥影响的

//因为从java源文件获取字符串string时,已经通过UTF-8编码方式进行解码了

//而string.getBytes("GB2312")是使用指定的编码方式对字符串string进行从新编码

//这两者之间没啥关系的

java怎么把把字符转成utf-8

java不同编码之间进行转换,都需要使用unicode作为中转。

以utf-8转gbk为例,示例代码如下:

String t = "这是一个字符串aaa111";

String utf8 = new String(t.getBytes( "UTF-8"));

System.out.println(utf8);

String unicode = new String(utf8.getBytes(),"UTF-8");

System.out.println(unicode);

String gbk = new String(unicode.getBytes("GBK"));

System.out.println(gbk);

Java怎么将字符串转换为GB2312原编码

@Test

public void test333(){

String a="青白";

try {

byte[] b=a.getBytes("GB2312");

System.out.println(bytesToHexFun1(b));

 

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

//将byte数组转成16进制字符串

 public static String bytesToHexFun1(byte[] bytes) {

    char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', 

            '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

        // 一个byte为8位,可用两个十六进制位标识

        char[] buf = new char[bytes.length * 2];

        int a = 0;

        int index = 0;

        for(byte b : bytes) { // 使用除与取余进行转换

            if(b  0) {

                a = 256 + b;

            } else {

                a = b;

            }

            buf[index++] = HEX_CHAR[a / 16];

            buf[index++] = HEX_CHAR[a % 16];

        }

        return new String(buf);

    }

    

中心思想就是先转成GB2312的byte数组,再转成16进制就可以了。

关于java字符串编码转换和Java字符串转码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。