如有一个String型变量,
能不能得到它目前的编码格式,然后在做相应的转换??

解决方案 »

  1.   

    呵呵,看过一个方法String str=...
    try {
    byte [] bs=str.getBytes("gb2312");
    System.out.println("OK!");
    } catch (Exception e) {
    System.out.println("Bad!");
    }
      

  2.   

    我觉得很奇怪啊,String 都是UNICODE的,你这是不知那一些出了问题,得到了一些垃圾内容.其实从byte流到char流,一般都有地方设置charset的.就算没有,你也可以用io里的InputStreamRead/Writer给iostream给加一个chartset.例如jsp来说吧,就有request.setCharxxx方法的.
      

  3.   

    如果你不指定编码方式的话,String的编码方式是从操作系统的file.encoding这个环境变量中获取编码方式的。
      

  4.   

    这个方法能把你输入的汉字,或者字母变成数字显示出来,不知道是不是你想要的结果!!!
    import javax.swing.*;
    public class Love 
    {
    public static void main(String[] args) 
    {
    String s=JOptionPane.showInputDialog("请输入字符串:");
    int  d;
    d=s.length();
    char ch[]=new char[d];
    int  n[]=new int[d];
    for(int i=0;i<d;i++)
    {
    ch[i]=s.charAt(i);
    n[i]=ch[i]-'0';
    }
    for(int w=0;w<d;w++)
    {
    System.out.print(n[w]);
    }
    }
    }
      

  5.   

    从你问题看,你没有明白java的编码方式原理,java的JVM的缺省编码方式由系统的“本地语言环境”设置确定,和操作系统的类型无关在JAVA源文件-->JAVAC-->Class-->Java-->getBytes()-->new String()-->显示的过程中,每一步都有编码的转换过程,这个过程总是存在的,只是有的时候用默认的参数进行JAVAC是以系统默认编码读入源文件,然后按UNICODE进行编码的。在JAVA运行的时候,JAVA也是采用UNICODE编码的,并且默认输入和输出的都是操作系统的默认编码,也就是说在new String(bytes[,encode])中,系统认为输入的是编码为encode的字节流,换句话说,如果按encode来翻译bytes才能得到正确的结果,这个结果最后要在JAVA中保存,它还是要从这个encode转换成Unicode,也就是说有bytes-->encode字符-->Unicode字符的转换;而在String.getBytes([encode])中,系统要做一个Unicode字符-->encode字符-->bytes的转换。 
    以下是取得系统缺省编码方式
    public encoding {
        public static void main(String[] args) {
           Properties initProp = new Properties(System.getProperties());
           System.out.println("file.encoding:" + initProp1.getPropert("file.encoding"));
           System.out.println("file.encoding:" + initProp1.getPropert("user.language"));   }
    }
    总之,java 编码都是Unicode 因此, 我们只要知道当前系统缺省的编码方式,然后Unicode编码转换成当前系统缺省的编码方式