社区
Java SE
帖子详情
如何正确得到一个String的编码是Big5还是GB2312?急!!!!!
raingod1980
2006-01-25 10:45:44
我有个String,他有且只有两者编码可能,要么是Big5要么是GB2312的.
但如何正确得到这个String的编码是Big5还是GB2312?
谢谢!
...全文
471
15
打赏
收藏
如何正确得到一个String的编码是Big5还是GB2312?急!!!!!
我有个String,他有且只有两者编码可能,要么是Big5要么是GB2312的. 但如何正确得到这个String的编码是Big5还是GB2312? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
低调的小青蛙
2006-02-11
打赏
举报
回复
支持 "sky_boxer(饿鱼骨头)" 兄,Java 中的字符串类 String 是以 unicode 方式存放的。
问 String 是哪一种编码这个问题是没有意义的。
详细说明,推荐参考一篇关于字符与编码的文章:
http://www.regexlab.com/zh/encoding.htm
tomuno
2006-02-01
打赏
举报
回复
hns1971
2006-02-01
打赏
举报
回复
首先要说明的是,String肯定是unicode编码方式,String的许多构造方法要求指明编码方式,例如使用byte[]构造时,系统将按该编码方式把字节数组转换成unicode编码,如果不指明,系统将根据jdk里指明的编码方式进行转换。
你的String是从什么地方得到的?如果是从文件中得到的,我建议你从文件中读一部分内容出来,按两种编码方式转换,使用System.out.println输出看看,那种能正确显示,就是那种
饿鱼骨头
2006-01-27
打赏
举报
回复
大家都知道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(北极星)(北京那么大,何处是我家) ( )
我前面回复中给的地址,里面的代码就是用统计学来判断编码。
kmljq2004
2006-01-26
打赏
举报
回复
在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)
725137
2006-01-26
打赏
举报
回复
cenlmmx(学海无涯苦作舟)
说得有道理啊.
只能说用什么样的编码去编码一个字符串.
chg2008
2006-01-26
打赏
举报
回复
java有一个设定编码方式的方法,应该可以取得String 的编码方式
北极猩猩
2006-01-26
打赏
举报
回复
我记得在windows中有一个API可以通过统计学方式判断文本的编码,不过准确率不到90%
cenlmmx
2006-01-25
打赏
举报
回复
这个是没有意义的,就象一个文件里面全是2进制流,你可以用文本方式打开,也可以用2进制方式打开.
那你能说它是文本文件还是2进制文件.
只能是文本方式打开,操作系统按文本方式给你解释打开给你看(就可能有看不懂的乱码)
以用2进制方式打开,操作系统按2进制方式给你解释打开给你看.
比如说一个字节为65,文本方式就是A,2进制方式就是65.
String的编码也是同样道理.
moumouren
2006-01-25
打赏
举报
回复
没有办法
一个字符串不指定它使用什么编码是没有意义的
孙亖
2006-01-25
打赏
举报
回复
gz
饿鱼骨头
2006-01-25
打赏
举报
回复
也算经典问题了,把下面的收藏到自己的类库里去吧^_^
http://dev.csdn.net/article/10/10961.shtm
http://dev.csdn.net/article/10/10962.shtm
yingtju
2006-01-25
打赏
举报
回复
没法判断吧,他们都是一个字符占两个字节
一个字节流按哪种方式都能解析出字符来
积木
2006-01-25
打赏
举报
回复
嗯?String默认的应该是unicode吧。。
yuzl32
2006-01-25
打赏
举报
回复
: )
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;
}
VC中实现
GB2312
、
BIG5
、Unicode
编码
转换的方法
主要介绍了VC中实现
GB2312
、
BIG5
、Unicode
编码
转换的方法,该功能非常实用,需要的朋友可以参考下
jsp中文问题的解决
在刚接触到jsp的时候,多多少少会碰到一些不支持中文的情况.但如何分析,怎么解决?这有一位coder的经验之谈.
C#中Byte[]和
String
之间转换的方法
很多朋友不清楚如何在Byte[]和
String
之间进行转换?下面小编给大家带来了byte与
string
转换的方法,感兴趣的朋友参考下吧
BIG5
到
GB2312
编码
转换器Java类实现
Java为开发者提供了丰富的字符
编码
支持。Java中的字符串是使用UTF-16
编码
的,但Java应用程序同样支持通过字符流(如Reader和Writer类)和字节流(如和类)来处理不同的字符
编码
。
实现GB码与
Big5
码的字符
编码
转换工具
在计算机处理中文字符时,需要一套标准化的
编码
系统来确保数据的一致性和准确性。
GB2312
和
Big5
是两种用于简体中文和繁体中文的
编码
标准,它们各自为简体和繁体中文提供了
编码
方案。
GB2312
,全称《信息交换用汉字
编码
字符集 基本集》,是中国国家标准简体中文字符集,收录了6763个汉字和682个其他符号,共7445个
编码
,是后续扩展的GBK和GB18030字符集的基础。
Big5
编码
是繁体中文的主要
编码
标准,主要用于台湾和香港地区。
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章