一、windows下默认编码GBK。windows下编写的cpp文件默认GBK编码。代码中如果有常量字符串,字符串的编码格式跟代码文件的编码格式一致。
二、linux下默认编码是utf8。linux要把GBK编码转换成utf8编码需要使用iconv库。但是如果直接把GBK转成UTF8,会出现有些字符串能正常转换,有些转换后是乱码。正确的转换方式,先将GBK转成unicode,再将unicode转成utf8,最后未发现乱码。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GBK与UTF-8多次转换乱码问题,急求解!相关的知识,希望对你有一定的参考价值。
现在项目中有需求需要将字符串进行多次转码,非常郁闷的是GBK转换成ISO以后还可以转换回来,但是GBK转换成UTF-8以后回转的时候会乱码,网上看了N多的文章也没帮助解决问题,求高手们帮忙解决一下,非常感谢!!
下面是一段测试程序,public class Test
public static void main(String[] args) throws Exception
String gbk = "郁闷";
String iso = null;
String utf = null;
iso = new String(gbk.getBytes("GB2312"),"ISO-8859-1");
utf = new String(gbk.getBytes("GB2312"),"UTF-8");
System.out.println(new String(iso.getBytes("ISO-8859-1"),"GB2312"));
System.out.println(new String(utf.getBytes("UTF-8"),"GB2312"));
程序输出:
郁闷
锟斤拷
谢谢fangliangliang的回答~~ 可是我想转换GBK到UTF-8该怎样操作呢?
一、windows下默认编码GBK。windows下编写的cpp文件默认GBK编码。代码中如果有常量字符串,字符串的编码格式跟代码文件的编码格式一致。
二、linux下默认编码是utf8。linux要把GBK编码转换成utf8编码需要使用iconv库。但是如果直接把GBK转成UTF8,会出现有些字符串能正常转换,有些转换后是乱码。正确的转换方式,先将GBK转成unicode,再将unicode转成utf8,最后未发现乱码。
以上是关于GBK与UTF-8多次转换乱码问题,急求解!的主要内容,如果未能解决你的问题,请参考以下文章