如何正确得到一个String的编码是Big5还是GB2312?急!!!!! 我有个String,他有且只有两者编码可能,要么是Big5要么是GB2312的.但如何正确得到这个String的编码是Big5还是GB2312?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 : )byte[] temp1,temp2;temp1 = yourstring.getBytes("8859-1");temp2 = yourstring.getBytes("gb2312");String compstring1,compstring2;compstring1 = new String(temp1);compstring2 = new String(temp2);if(yourstring.equals(temp1)){ //8859-1;}else{ //gb2312;} 嗯?String默认的应该是unicode吧。。 也算经典问题了,把下面的收藏到自己的类库里去吧^_^http://dev.csdn.net/article/10/10961.shtmhttp://dev.csdn.net/article/10/10962.shtm 这个是没有意义的,就象一个文件里面全是2进制流,你可以用文本方式打开,也可以用2进制方式打开.那你能说它是文本文件还是2进制文件.只能是文本方式打开,操作系统按文本方式给你解释打开给你看(就可能有看不懂的乱码)以用2进制方式打开,操作系统按2进制方式给你解释打开给你看.比如说一个字节为65,文本方式就是A,2进制方式就是65.String的编码也是同样道理. 我记得在windows中有一个API可以通过统计学方式判断文本的编码,不过准确率不到90% java有一个设定编码方式的方法,应该可以取得String 的编码方式 cenlmmx(学海无涯苦作舟) 说得有道理啊.只能说用什么样的编码去编码一个字符串. 在JAVA中对于中文的处理一般使用GBK或GB2312,这的区别: GBK 大的中文字符集; GB2312 相对于GBK较少; String ss="你好"; byte[] temp_b = ss.getBytes("GBK"); byte[] temp_s = ss.getBytes("GB2312); String ss_b= new String(temp_b); String ss_a= new String(temp_a);在这里的ss_b与ss_a是没有区别的!在JSP中处理中一般使用GBK(针对UNIX平台/Oracle/Apache) 大家都知道java是用unicode来“编码”字符串的,那解决这个问题前得先简单说说unicode和Big5,GB2312之类的文字标准之间的区别。Big5 GB2312这些称为文字标准,它不光规定了自己特定的字符集,还规定了字符的特定的字节存储形式。这样,同样的一个字,在不同的标准中会出现不同的储存形式,比如“中”字在Big5和GB2312中就是不同的编码。这也是会乱码出现的原因。那么,要解决这个问题该怎么办呢,就产生了unicode。unicode其实就是一个收录了地球上几乎所有的常用字符的大字符集,并给每一个字符一个不重复的编号。而这个编号的储存形式,那就看是给unicode编码的标准了,比如说UTF-8,UTF-16就都是unicode的编码标准。打个比方,就是我们用不同的方言说话,四川话,苏州话,虽然音不同,但字写出来时一样的,unicode就是那统一的文字,不同的编码就是各种方言的发音体系。而之前的Big5 GB2312就是不光发音不同,连文字也不一样,虽然 egg 蛋 能表达同样的意思。那么既然String里面用的是同一套字符序号,那怎么判断其所读入的文本的编码呢?那么可以寻找其编码的特殊字符,比如说某个繁体字符在Big5存在,但在GB2312中不存在,那么可以通过统计,推断出这个String来源于何种编码的文本了。当然,可信度不可能达到100%。to Polarislee(北极星)(北京那么大,何处是我家) ( ) 我前面回复中给的地址,里面的代码就是用统计学来判断编码。 首先要说明的是,String肯定是unicode编码方式,String的许多构造方法要求指明编码方式,例如使用byte[]构造时,系统将按该编码方式把字节数组转换成unicode编码,如果不指明,系统将根据jdk里指明的编码方式进行转换。你的String是从什么地方得到的?如果是从文件中得到的,我建议你从文件中读一部分内容出来,按两种编码方式转换,使用System.out.println输出看看,那种能正确显示,就是那种 支持 "sky_boxer(饿鱼骨头)" 兄,Java 中的字符串类 String 是以 unicode 方式存放的。问 String 是哪一种编码这个问题是没有意义的。详细说明,推荐参考一篇关于字符与编码的文章:http://www.regexlab.com/zh/encoding.htm Swing程序客户端与服务器问题 BufferedReader无法完整读取txt文件 read的阻塞怎么解决??? java中如何判断一个1.exe文件是否已经运行? 初学JAVA到异常这里,有个问题想问! 各位帮忙啊,,在ECLIPSE中查找替换操作的问题 关于Listener和Sleep的问题。 如何将数据库中的图片文件输出到IE(但不使用JavaBean),可另开贴给分 有没有办法让一个Java程序只能有一个实例在运行 初学java,请问各位如何将Edit的内容赋给一个Double变量??急急!! jsp页面中 生成一个年份的下拉框 请教两个关于String的问题。
temp1 = yourstring.getBytes("8859-1");
temp2 = yourstring.getBytes("gb2312");
String compstring1,compstring2;
compstring1 = new String(temp1);
compstring2 = new String(temp2);
if(yourstring.equals(temp1))
{
//8859-1;
}
else
{
//gb2312;
}
http://dev.csdn.net/article/10/10962.shtm
那你能说它是文本文件还是2进制文件.
只能是文本方式打开,操作系统按文本方式给你解释打开给你看(就可能有看不懂的乱码)
以用2进制方式打开,操作系统按2进制方式给你解释打开给你看.
比如说一个字节为65,文本方式就是A,2进制方式就是65.
String的编码也是同样道理.
说得有道理啊.只能说用什么样的编码去编码一个字符串.
GBK 大的中文字符集;
GB2312 相对于GBK较少;
String ss="你好";
byte[] temp_b = ss.getBytes("GBK");
byte[] temp_s = ss.getBytes("GB2312);
String ss_b= new String(temp_b);
String ss_a= new String(temp_a);
在这里的ss_b与ss_a是没有区别的!在JSP中处理中一般使用GBK(针对UNIX平台/Oracle/Apache)
那么,要解决这个问题该怎么办呢,就产生了unicode。unicode其实就是一个收录了地球上几乎所有的常用字符的大字符集,并给每一个字符一个不重复的编号。而这个编号的储存形式,那就看是给unicode编码的标准了,比如说UTF-8,UTF-16就都是unicode的编码标准。打个比方,就是我们用不同的方言说话,四川话,苏州话,虽然音不同,但字写出来时一样的,unicode就是那统一的文字,不同的编码就是各种方言的发音体系。
而之前的Big5 GB2312就是不光发音不同,连文字也不一样,虽然 egg 蛋 能表达同样的意思。那么既然String里面用的是同一套字符序号,那怎么判断其所读入的文本的编码呢?那么可以寻找其编码的特殊字符,比如说某个繁体字符在Big5存在,但在GB2312中不存在,那么可以通过统计,推断出这个String来源于何种编码的文本了。当然,可信度不可能达到100%。to Polarislee(北极星)(北京那么大,何处是我家) ( )
我前面回复中给的地址,里面的代码就是用统计学来判断编码。
你的String是从什么地方得到的?如果是从文件中得到的,我建议你从文件中读一部分内容出来,按两种编码方式转换,使用System.out.println输出看看,那种能正确显示,就是那种
http://www.regexlab.com/zh/encoding.htm