仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1863|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网页编程之关于java中字符编码的一点心得,大概对...

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:47:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,编码|初学|心得这是张孝祥先生的java失业培训视频教程内里的一道标题(有所变化):
编写上面的程序代码,剖析和察看程序的运转了局:

importjava.io.*;
publicclassTestCodeIO{
publicstaticvoidmain(String[]args)throwsException{
InputStreamReaderisr=newInputStreamReader(System.in,"iso8859-1");
BufferedReaderbr=newBufferedReader(isr);
StringstrLine=br.readLine();
br.close();
isr.close();
System.out.println(strLine);
}
}
运转程序后,输出“中国”两个字,输入了局为???ú
请依照上面两种办法修正上述程序,是输出的中文可以一般输入
1。修正程序中的语句
InputStreamReaderisr=newInputStreamReader(System.in,"iso8859-1");
2。不修正下面的语句,修正上面的语句
System.out.println(strLine);


第一种该法很复杂,只需改成上面如许就能够了,这里不具体会商
InputStreamReaderisr=newInputStreamReader(System.in,"gb2312");


这里我要具体会商的是第二种该法怎样改

后来我是如许改的
System.out.println(newString(strLine.getBytes(),"iso8859-1"));
输出“中国”后输入的了局固然不是下面所述的乱码,可是仍是乱码,明显这类该法是不准确的!

这里我要感激软件平易近工告知我的准确改法,使我名顿开
System.out.println(newString(strLine.getBytes("iso8859-1")));

这两种改法事实有甚么区分呢?为了便利人人浏览,我先把准确和毛病的改法帖出来:
importjava.io.*;
publicclassTestCodeIO{
publicstaticvoidmain(String[]args)throwsException{
InputStreamReaderisr=newInputStreamReader(System.in,"iso8859-1");
//CreateanInputStreamReaderthatusesthegivencharsetdecoder
BufferedReaderbr=newBufferedReader(isr);
StringstrLine=br.readLine();
br.close();
isr.close();
System.out.println(strLine);
System.out.println(newString(strLine.getBytes(),"iso8859-1"));//毛病改法
//EncodesthisString(strLine)intoasequenceofbytesusingtheplatform’s
//defaultcharset(gb2312)thenconstructsanewStringbydecodingthe
//specifiedarrayofbytesusingthespecifiedcharset(iso8859-1)
//becausethisString(strLine)usesthecharsetdecoder"iso8859-1",soitcan
//onlybeencodedby"iso8859-1",cann’tbeencodedbytheplatform’sdefault
//charset"gb2312",sothislineiswrong.
System.out.println(newString(strLine.getBytes("iso8859-1")));//准确改法
//EncodesthisString(strLine)intoasequenceofbytesusingthenamed
//charset(iso8859-1),thenconstructsanewStringbydecodingthe
//specifiedarrayofbytesusingtheplatform’sdefaultcharset(gb2312).
//Thislineisright.
}
}

下面的英文正文已说得很分明了,这里我仍是注释一下吧:

起首是毛病的改法System.out.println(newString(strLine.getBytes(),"iso8859-1"));
这句代码是将strLine中的字符串用体系默许的编码体例(这里是gb2312)
转换为字节序列,然后用指定的编码体例(这里是iso8859-1)机关一个新的
String对象,并打印到屏幕上。
毛病在那里呢?
请注重这一段代码
InputStreamReaderisr=newInputStreamReader(System.in,"iso8859-1");
BufferedReaderbr=newBufferedReader(isr);
StringstrLine=br.readLine();
这里strLine存储的内容是用指定的编码体例(iso8859-1)存储的,而转换成字节码
的时分(这句代码strLine.getBytes())却利用了体系默许的gb2312编码,以是固然就
输入乱码了!然后用gb2312编码的字节序列构建新的String对象的时分又利用了
iso8859-1编码,以是输入的乱码和System.out.println(strLine)有所分歧。


至于准确的改法就不必具体申明了吧,起首将strLine用iso8859-1编码体例转换成字节
序列,然后用体系默许的编码体例(gb2312)构建新的String对象,然后打印输入。
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
老尸 该用户已被删除
沙发
发表于 2015-1-21 14:57:10 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
变相怪杰 该用户已被删除
板凳
发表于 2015-1-26 20:11:37 | 只看该作者
是一种使用者不需花费很多时间学习的语言
金色的骷髅 该用户已被删除
地板
发表于 2015-1-27 22:53:50 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
若天明 该用户已被删除
5#
发表于 2015-2-5 10:54:48 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
灵魂腐蚀 该用户已被删除
6#
发表于 2015-2-5 15:57:06 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
小女巫 该用户已被删除
7#
发表于 2015-2-8 08:46:54 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
小妖女 该用户已被删除
8#
发表于 2015-2-10 05:27:44 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
乐观 该用户已被删除
9#
发表于 2015-2-24 19:31:10 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-6 22:50:23 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
再现理想 该用户已被删除
11#
发表于 2015-3-11 04:38:49 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
谁可相欹 该用户已被删除
12#
发表于 2015-3-17 20:10:44 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
因胸联盟 该用户已被删除
13#
发表于 2015-3-24 18:20:34 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
分手快乐 该用户已被删除
14#
发表于 2015-3-25 02:44:56 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
再见西城 该用户已被删除
15#
发表于 2015-4-6 10:10:35 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
活着的死人 该用户已被删除
16#
发表于 2015-4-9 21:06:05 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
admin 该用户已被删除
17#
发表于 2015-4-10 23:25:12 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
深爱那片海 该用户已被删除
18#
发表于 2015-4-21 13:22:06 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
爱飞 该用户已被删除
19#
发表于 2015-4-21 20:12:00 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
不帅 该用户已被删除
20#
发表于 2015-5-7 14:59:26 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-27 22:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表