首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中将utf8转换为gb2312

在java中将utf8转换为gb2312
EN

Stack Overflow用户
提问于 2015-11-05 02:22:22
回答 2查看 5.6K关注 0票数 1

看看下面的代码

代码语言:javascript
复制
try {
        String str = "上海上海";
        String gb2312 = new String(str.getBytes("utf-8"), "gb2312");
        String utf8 = new String(gb2312.getBytes("gb2312"), "utf-8");
        System.out.println(str.equals(utf8));
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

打印假!

我在jdk7和jdk8下运行这段代码,我的代码风格是utf8。

有谁可以帮我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-05 02:43:26

您要寻找的是输出/输入时的编码/解码。

正如@kalpesh所说,在内部,这都是unicode。如果要以特定编码方式读取流,然后将其写入不同的编码,则必须为字节(流中)和字符串(在java中)之间的转换指定编码,然后指定字符串(在java中)到字节(输出流)之间的转换,如下所示:

代码语言:javascript
复制
        InputStream is = new FileInputStream("utf8_encoded_text.txt");
        OutputStream os = new FileOutputStream("gb2312_encoded.txt");

        Reader r = new InputStreamReader(is,"utf-8");
        BufferedReader br = new BufferedReader(r);
        Writer w = new OutputStreamWriter(os, "gb2312");
        BufferedWriter bw = new BufferedWriter(w);

        String s=null;
        while((s=br.readLine())!=null) {
            bw.write(s);
        }
        br.close();
        bw.close();
        os.flush();

当然,您仍然需要进行正确的异常处理,以确保一切都正确关闭。

票数 0
EN

Stack Overflow用户

发布于 2015-11-05 02:30:31

代码语言:javascript
复制
        String gb2312 = new String(str.getBytes("utf-8"), "gb2312");

此语句不正确,因为字符串构造函数应该采用匹配的字节数组和charset,您是说字节是utf-8,但是charset是gb2312。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33535594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档