有没有办法判断一个String当前的编码格式??? 如有一个String型变量,能不能得到它目前的编码格式,然后在做相应的转换?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,看过一个方法String str=...try {byte [] bs=str.getBytes("gb2312");System.out.println("OK!");} catch (Exception e) {System.out.println("Bad!");} 我觉得很奇怪啊,String 都是UNICODE的,你这是不知那一些出了问题,得到了一些垃圾内容.其实从byte流到char流,一般都有地方设置charset的.就算没有,你也可以用io里的InputStreamRead/Writer给iostream给加一个chartset.例如jsp来说吧,就有request.setCharxxx方法的. 如果你不指定编码方式的话,String的编码方式是从操作系统的file.encoding这个环境变量中获取编码方式的。 这个方法能把你输入的汉字,或者字母变成数字显示出来,不知道是不是你想要的结果!!!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]); } }} 从你问题看,你没有明白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编码转换成当前系统缺省的编码方式 java Runtime.exec(); Jtable 中 list 上移/下移 问题 jar文件能加密吗?怎么保护自己的程序 java byte数组存放无符号数,例如0xFF 100分求:为什么匿名内部类,不能访问一局部变量 答案!在线等,解决立即给分! 一个关于随机数的问题 一段关于对象序列化的代码,帮忙看看 两种语言的区别 哪儿有SCJP的培训教程下载,急! 问题:如何修改代码才可以找到5+2的结果? 新手的一个字符串的小问题 一个程序运行有问题,大家帮帮忙!
try {
byte [] bs=str.getBytes("gb2312");
System.out.println("OK!");
} catch (Exception e) {
System.out.println("Bad!");
}
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]);
}
}
}
以下是取得系统缺省编码方式
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编码转换成当前系统缺省的编码方式