String str="中国";
String str1=new String(str.getBytes("gbk"),"ISO8859_1");String str2=new String(str1.getBytes("ISO8859_1"),"gbk");
System.out.println("Received: " + str2); // 这一行能够输出"中国" 问题1 为什么下面第二行改成utf-8,就不能正确输出?String str="中国";
String str1=new String(str.getBytes("utf-8"),"ISO8859_1"); //改成了utf-8String str2=new String(str1.getBytes("ISO8859_1"),"gbk");
System.out.println("Received: " + str2); // 这一行输出乱码
问题2 问题1 为什么都改成了utf-8还是不能正常String str="中国";
String str1=new String(str.getBytes("utf-8"),"ISO8859_1"); //改成了utf-8String str2=new String(str1.getBytes("utf-8"),"gbk"); // 也改成了utf-8
System.out.println("Received: " + str2); // 这一行输出乱码
难道string.getBytes(string charset) 的charset不是任意选择的?
String str1=new String(str.getBytes("gbk"),"ISO8859_1");String str2=new String(str1.getBytes("ISO8859_1"),"gbk");
System.out.println("Received: " + str2); // 这一行能够输出"中国" 问题1 为什么下面第二行改成utf-8,就不能正确输出?String str="中国";
String str1=new String(str.getBytes("utf-8"),"ISO8859_1"); //改成了utf-8String str2=new String(str1.getBytes("ISO8859_1"),"gbk");
System.out.println("Received: " + str2); // 这一行输出乱码
问题2 问题1 为什么都改成了utf-8还是不能正常String str="中国";
String str1=new String(str.getBytes("utf-8"),"ISO8859_1"); //改成了utf-8String str2=new String(str1.getBytes("utf-8"),"gbk"); // 也改成了utf-8
System.out.println("Received: " + str2); // 这一行输出乱码
难道string.getBytes(string charset) 的charset不是任意选择的?
解决方案 »
- 谁有java poi中文帮助文档
- 真心求救高人,本人现在有一个.dat的文件,是一个字典,每行一个词,我用java该怎么向字典里添加信息呢?
- socket编写银行通讯接口,搞不懂他说的包头是什么东东,达人帮理解一下!
- 这个是什么意思--》(ButtonPanel.this)
- 关于java程序编译问题
- java 图片显示的问题
- 小应用程序与应用程序的转换
- 该选择什么开发工具?来者有分!
- 请问那里能下载jdk1.3,具体网址?
- 哪位大神能帮忙解释一下这段代码吗,我知道这个程序的功能,但是每行代码的作用我不知道,能每行注释说明一下吗,详细解说一下吗?跪谢!
- 用Eclipse3.1.2+tomcat4.1+lomboz写jsp时的问题!
- 新人请高手帮我看看,冒泡排序,数组的问题?
System.out.println("Received: " + str1);String str2=new String(str1.getBytes("utf-8"),"gbk");
System.out.println("Received: " + str2);
这个为什么也不行啊,我把gbk转成utf-8的,然后又从utf-8转成gbk的,也有错误?
-------------------------------------
把gbk改成了utf-8,但原来不是gbk
==========================
原来不是utf-8是什么意思?你的意思是 string.getbyte("utf-8"),这句话正确的前提是string必须是utf-8编码的?
Note:1.utf-8采用2/3混编的方式。目前容纳的汉字范围小于gbk编码。
2.按照GBK18030、GBK、GB2312的顺序,3种编码是向下兼容.
3.utf-8只兼容iso-8859-1,对于其他编码方式并不兼容.
多其他编码的提法其实只是表明,其他编码中的字符在utf-8中有对应的字符,但他们的位置
并不相同.而且存在其他编码有的字utf没有的情况.如gbk.
======================
果然不出我所料,我感觉不带参数的getBytes()对程序员的陷害太大了。请问,新的API中是怎么修改的?
ISO-8859-1看来你对为什么会这样是是了解的.ISO-8859-1是唯一一个能让顺序打印的字符.其它的为什么不行因为字符的转换模式之间存在很大的区别.
public class Uceshi {
public static void main(String[] args) throws java.io.UnsupportedEncodingException{ String str="中国";
String str1=new String(str.getBytes("utf-8"),"ISO8859_1");
String str2=new String(str1.getBytes("ISO8859_1"),"utf-8");
System.out.println("Received: " + str2); }}一样能打印"中国".换成"gbk"也是一样的.