摘要: 前面,我写了几篇小文章,讲了网络积件的一些东西,其实我认为我所讲叙的是很不全面的东西,我也认为我自己的写作水平真的有待于提高,我并不能把自己的想法以更好的形式表达出来,我善长于想,而不是说。但我会努力的,我会一步步完善我的想法。
上面,我写了一些网络积件的表面内容,可能有些读者已经看过了,您可能会想:“既然和网页语法html相类似,为什么不就用html来表现网络积件内容呢?......
摘要:请高手推荐学习rtlinux的好书,谢谢!
......
J2EE Web组件中中文及相关的问题 作者:whodsowj2ee web组件中中文及相关的问题
作者:whodsow(原作) 【程序编程相关:
网络数据流的java处理】
【推荐阅读:
ASP中SQL语句导致的性能问题】一. 常见字符集简介 【扩展信息:
C++ 枚举类型的思考】
“与c/c++不同,java中的字符数据是16位无符号型数据,它表示unicode集,而不仅仅是ascii集”①.这是一个很好的做法,它解决了www上更多的程序设计问题,比如说低成本的国际化(international),然而用16位的字符,却带来了浪费,毕竟java所处理的信息,绝大多数都是英文,对它们来说7位的acsii码已经足够了,而unicode却需要双倍的空间,所以java的这种兼顾各种语言的做法却是与存储资源及效率的妥协.而对中国的java程序员(特别是初级的)来说,java采用unicode字符,却给我们带来了尴尬甚至噩梦——web页面上显示的不是中文,而是乱码. 字符集就是字符内码到字符的表现形式之间的映射的集合.ascii字符a是就内码0x41的表现形式,所以在很多程序语言中,字符变量与整型变量仅在一念之差. 1. iso8859系列 iso8859包括诸如iso8859-1,iso8859-2之类的一系列字符集,它们都是8位的字符集,0~0x7f仍与ascii字符集保持兼容,大于0x7f的是各种拉丁字符或欧洲字符的扩展. 2. gb2312字符集 如果像iso8859系列一样,大于0x7f的字符用来表示汉字,则最多表示128个,这显然不够,于是就有了gb2312标准所产生的字符集,如果当前字节(8 bit)小于0x80,则仍当它为英文字符;如果它大于等于0x80,则它与紧接着它的下一个字节构成一个汉字字符,这样,gb2312字符集可包含大约4000多个常用简体汉字与其他汉字中的特殊符号(如①㈠之类).其他类似的汉字字符集还有gbk(gb2312的扩展),gb18030,big5(繁,台湾省用),详细规范介绍可参考:http://www.unihan.com.cn/cjk/ana17.htm 3. unicode字符集 unicode字符最初是16位的(出于需要,后来增加了代用对),它与7位的us-ascii保持兼容,ms的windows nt/2000/xp与sun的java都用它作为默认的字符集,它最初是美国商务联盟的事实上的标准,它遵循国际通用字符(ucs)集标准:iso/iec 10646.unicode的主要目标是提供一个“通用字符集”,这个通用字符集包括世界上所有的语言,字母与文字,所以在unicode字符集中,不光“i”是字母,“我”也是字母,在写java时也可以“int 我是中国人 = 0xff;”.毕竟16位的unicode字符集最多只有216= 65536个字符,还不足以在实际应用中表示所有的字符,而且在以英文为主要信息的互联网时代,它的使用.存储与传输,都极其浪费空间,所以在此基础上出现了utf-8(unicode transformation form 8-bit form)与utf-16这两种对unicode字符编码的规范,在utf-8中,属于us-ascii中的字符,仍用一个字节表示,且与us-ascii兼容,编码其他的字符,则用1(大于0x7f部分)到3个字节.utf-8的变长性与复杂性,对非ascii的字符,就不大友好了,也开始违背了unicode的初衷.而utf-16则是很简单的编码方式,它完全遵循unicode标准,用16位的定长空间来表示部分unicode字符集.关于unicode的更多规范,请访问unicode联盟站点:http://www.unicode.org,utf-8与utf-16分别定义在ietf的rfc 2279与rfc 2781中,可以通过http://www.ietf.org/rfc2279.txt或http://www.ietf.org/rfc2781.txt访问它们. 一般情况下,字符集名称是大小写不敏感的,所以gb2312也可以写作gb2312或gb2312. 二. 乱码带来的尴尬 1. 先看一个jsp jsp(java server page)的实质还是一个servlet,所以用jsp,也可以说明servlet中的一些问题,就一般而言,jsp代码比servlet代码还要简单. 我们先用jsp来做一个实验,下面的这个jsp文件中含有常量字符串“我是中国人”,看看它在浏览器的输出是否会是乱码? <%-- discomfiture.jsp --%> <% string str = "我是中国人"; system.out.println(str); out.println(str); %> 从浏览器打开它,并没有乱码,显示的就是“我是中国人”这个字符串.先别乐,再看看服务器的输出窗口吧,如图2-1,服务器监视窗口输出了乱码(红色下划线标出). 图 2-1 服务器窗口中输出的乱码 虽说只是在服务器端出现了乱码,而客户端浏览器是完全正确显示的,但这里很明显出了什么问题,否则都两边应该是正确的输出. 服务器端输出了乱码,说明服务器java虚拟机(java virtual machine, jvm)没有“得到”正确的字符串.为了保证jvm能够正确“得到”我们指出的含中文的常量字符串,我们可以直接用字符的unicode内码代替字符串中的字符,就像 string str=”i am chinese”; 用 string str = “\u0049\u0020\u0061\u006d\u0020\u0043\u0068\u006e\u0065\u0073\u0065”; 代替一样.明确给jvm指出这些字符串,是否还会出现乱码呢?要得到一个字符的unicode内码是件很容易的事,java与javascrtipt的字符都是用unicode字符集的.先看看输出unicode字符内码的java程序: public class getcode { public static void main(string args[]) { char chs[] = args[0].tochararray(); for(int i = 0; i < chs.length; i++){ system.out.println(chs[i] + " = " + (int)chs[i]); } system.out.println(args[0]); } } 编译并执行它,结果如图 不过javascript用起来,怎么也比java来得快,这里也介绍一段javascript代码: <script> var str = "我是中国人"; for(var i = 0; i < str.length; i++) { document.wirte(str.charat(i) + " = " + str.charcodeat(i) + "<br>"); } document.write(str); </script> 保存为html文件,输出如下图: 图 2-2 javascript在ie6.0中输出 现在替换discomfiture.jsp中的中文字符串: <%-- discomfiture1.jsp --%> <% string str = "\u6211\u662f\u4e2d\u56fd\u4eba"; system.out.println(str); out.println(str); %> 实验得到了希望的结果,服务器端输出窗口正确输出了字符串,可客户端浏览器却又输出了乱码,如下图 图 2-3 jsp在ie6.0中出现了乱码 图 2-4 客户端刷新两次的服务器窗口的输出 因为直接使用的unicode码生成的字符串,保证了在jsp生成的servlet discomfiture1$jsp中,字符串str的值一定是“我是中国人”,而服务器窗口的输出也证实了这一点,那么也就是说在servlet discomfiture$jsp中str的值并不是“我是中国人”,因为它在服务器窗口中输出了乱码,如图 2-1可以发现,当时输出了10个字符,即str的长度是10,并不是5.可为什么在浏览器却好好地得到了这个字符的输出呢? 先简要明白两个概念:编码与解码. 2. 编码与解码 编码(encode)与解码(decode)是两个相反的动作.编码是把字符按照某种映射标准(字符集),转换成字节,这时我们把执行编码动作时所采用的标准叫编码(encoding)....
下一页 摘要:一、项目经理定义:负责计划、预算、与管理层联系、与客户谈判。可能接受技术培训,但是不做开发工作;在一个大型项目或跨领域项目里,可能要指导好几个团队领导开展工作;主要负责项目按时在预算之内交付。
二、新项目领导展开工作的步骤:1.研读项目资料,找相关人员谈话来抓住问题=》决定让谁加入团队。2.草拟项目计划书——提纲式的计划书——越详细越好(最好自己负......