/*Charset 类 16 位的 Unicode 代码单元序列和字节序列之间的命名映射关系
此类定义了用于创建解码器和编码器以及检索与 charset 关联的各种名称的方法
此类的实例是不可变的 */
import java.util.*;
import java.io.*;
import java.nio.charset.*;;
public class CharsetTest {
public static void main(String args[]) throws IOException{
System.out.println("1. 用 Charset 类的方法,通过迭代器返回当前的 JVM 中可以使用的字符集 ");
Map m=Charset.availableCharsets();// 返回当前的 JVM 中可以使用的字符集
Set s=m.keySet();
Iterator it=s.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println();
System.out.println("2. 使用 Properties 返回当前 java 配置的系统属性 ");
Properties p=System.getProperties();
p.list(System.out);
/*System.out.println();
System.out.println("3. 使用 Properties 修改当前 java 使用的字符集 ");
p.put("file.encoding", "ISO-8859-1"); //JDK1.5 1.6 不可用
int data;
int i=0;
byte[] b=new byte[100];
try {
while((data=System.in.read())!='q'){
b[i]=(byte)data;
i++;
}
} catch (IOException e) {
e.printStackTrace();
}
String str=new String(b,0,i);
System.out.println(str);*/
String str=null;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
for(int i=0;i<1;i++){
str=br.readLine();
}
System.out.println(" 请输入…… ");
String strISO=new String(str.getBytes("GBK"),"ISO-8859-1");
// 把字符串按照 GBK 编码回字节数组,在以 ISO-8859-1 进行解码,得到字符串
System.out.println(" 使用 ISO-8859-1 字符编码输出 "+strISO);
String strGBK=new String(strISO.getBytes("ISO-8859-1"),"GBK");
// 把字符串按照 ISO-8859-1 编码回字节数组,在以 GBK 进行解码,得到字符串
System.out.println(" 将 ISO-8859-1 转 GBK 字符编码输出 "+strGBK);
}
}