##这段程序是想:先通过改变系统的默认字符集,由 "GBK "改成 "ISO-8859-1 " 所以输入的字符要先把由 "ISO-8859-1 "编码解码来的srt字符串
编码成字节数组;得到字节数组后,再由 "GBK "编码方法 解码成一个字符串strGBK,,我想输出的是这个strGBK 。
运行时输入: 中文+q
问题是:
这句(System.out.println(str);)是本不应能正确输出的,可输出的却是正确的。
而这句(String strGBK=new String(str.getBytes( "ISO-8859-1 "), "GBK ");) 是我认为能正确输出的,,去不能正确输出而显示 "? "
这是视频上的例子呀,可是怎么会出错呢???高手指点,,,,,(我用的是JCreator做的,不用有影响吧)
##
import java.nio.charset.*;
import java.util.*;
public class CharsetTest {
public static void main(String[] args) throws Exception
{
Properties p=System.getProperties();
p.put( "file.encoding ", "ISO-8859-1 ");
byte[] buf=new byte[100];
int i=0;
int data;
while((data=System.in.read())!= 'q ')
{
buf[i]=(byte)data;
i++;
}
String str=new String(buf,0,i);
System.out.println(str);这句应是不正确的,可输出的是正确的。
String strGBK=new String(str.getBytes( "ISO-8859-1 "), "GBK "); //这句应是正确输出的,可输出的是错的,是?
System.out.println(strGBK);
}
}
------解决方案--------------------
关注一下
------解决方案--------------------
控制台程序能测试出来吗?
java的编码首先要知道输入的什么编码,如果输入和输出的是同一种编码,而你的应用正好就支持这种编码,还要转换什么呢. 再把转成乱码吗?