java是如何将一个汉字字符转换成整形的?

lnsof 2012-06-08 01:36:13

String str = "第六世纪-http://down.c06.net";
StringBuffer sb=new StringBuffer();
for(int index=0;index<str.length();index++)
sb.append("&#"+(int)str.charAt(index)+";"); //将汉字字符转换成整形,即ISO-8859码。转换规则是什么?
out.print(sb.toString());
作者说可以通过这段程序将汉字转换为ISO-8859-1


又如何将一个ISO-8859码转换成汉字呢?
...全文
663 13 打赏 收藏 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Noskira 2013-07-04
  • 打赏
  • 举报
回复
private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。 String str = new String(); str += ch; try { byte[] bytes = str.getBytes("GB2312"); if (bytes.length < 2) return 0; //这里不理解,如果有理解下面这段代码的话,发我邮箱1394504953@qq.com,感激不尽. return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff); } catch (Exception e) { return 0; } }
beiouwolf 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:

这段代码并没有将汉字转为ISO-8859-1
只是把字符按char位置转成字符编码而已
而且,按他这个做法,只能处理GBK编码,GBK编码一个汉字占用2字节
如果是UTF编码,我怀疑这个函数工作的正常性


不懂不要乱讲,什么GBK,明明是 unicode
[/Quote]
我哪里说过这个不是unicode了
这个函数只是显示字符的unicode编码,那我说它是字符编码有不对吗?
我只是说这个函数并不是用来转88591的,不知道你在爆个什么劲...
无名老僧 2012-06-14
  • 打赏
  • 举报
回复
误导别人是犯罪!
无名老僧 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

这段代码并没有将汉字转为ISO-8859-1
只是把字符按char位置转成字符编码而已
而且,按他这个做法,只能处理GBK编码,GBK编码一个汉字占用2字节
如果是UTF编码,我怀疑这个函数工作的正常性
[/Quote]

不懂不要乱讲,什么GBK,明明是 unicode
beiouwolf 2012-06-14
  • 打赏
  • 举报
回复
这段代码并没有将汉字转为ISO-8859-1
只是把字符按char位置转成字符编码而已
而且,按他这个做法,只能处理GBK编码,GBK编码一个汉字占用2字节
如果是UTF编码,我怀疑这个函数工作的正常性
无名老僧 2012-06-14
  • 打赏
  • 举报
回复

String str = "第六世纪-http://down.c06.net";
StringBuffer sb=new StringBuffer();
for(int index=0;index<str.length();index++)
sb.append("&#"+(int)str.charAt(index)+";"); //将汉字字符转换成整形,即ISO-8859码。转换规则是什么?
out.print(sb.toString());
作者说可以通过这段程序将汉字转换为ISO-8859-1


这段代码是把汉字转换成unicode引用,&#后面跟1个10进制值表示一个unicode字符。你把一个汉字赋给一个int就知道是哪个数字了

public static void main(String... args){
int i='汉';
System.out.println(i);
}


---------- JAVA ----------
27721

输出完成 (耗时 0 秒) - 正常终止
ljhhh0123 2012-06-14
  • 打赏
  • 举报
回复
楼主复习一下ascii码吧。汉字也是一样的原理,只是它固定每个字占2个字节。
lnsof 2012-06-13
  • 打赏
  • 举报
回复
我问的是: (int)str.charAt(index) 这个将一个汉字字符转换成了整形,这个转换机制是什么样的?反过来,给出一个数字,我如何知道他对应哪个数字?
无名老僧 2012-06-08
  • 打赏
  • 举报
回复
ISO标准请参考http://zh.wikipedia.org/wiki/%E5%9C%8B%E9%9A%9B%E6%A8%99%E6%BA%96%E5%8C%96%E7%B5%84%E7%B9%94

其中ISO/IEC 8859-1 Information technology -- 8-bit single-byte coded graphic character sets - Part 1: Latin alphabet No. 1

明确表示iso8859-1为8-bit表示1个字符。
无名老僧 2012-06-08
  • 打赏
  • 举报
回复
iso-8859-1是单字节字符,不支持中文。你的阴谋不能实现
无名老僧 2012-06-08
  • 打赏
  • 举报
回复
整形是unicode码,java char类型跟unicode标准形式utf-16完全对应,并且是高位在前,低位在后。同时表示对iso8859不是很了解,请了解iso8859的解释下?
  • 打赏
  • 举报
回复
(int)str.charAt(index),这个就是强制转换啦。普通的英文字符串可以直接强制转换成int类型的ASCII码,只是一个汉字占用两个字节,至于转换结果是不是“ISO-8859”编码,我也不知道,不敢误导你呵呵

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧