fhdking
发贴: 28
积分: 0
|
于 2007-10-17 13:51
1. 由内存中一切皆二进制引出字符编码的讲解 大陆写的“中”到台湾显示不正常的原理分析,翻译软件的翻译原理,GBK-->“中”-->BIG5。讲解UTF-8编码和unicode编码,ASCII与Unicode码的转换规则,演示记事本显示字符时的趣味问题,分析乱码原因,GB2312码中也包含英文字符,如何识别GB2312码中的英文与汉字。最后讲了GB18030,如何支持? 2. 讲解了xml文档的编码问题。 讲解<?xml version="1.0"?>文档声明时,强调了version的重要性,例如,qq通讯协议的操作码刚开始是一个字节,后来随着新需求不断被发掘出来,发现需要用两个操作码了,要想平滑过渡,就非常需要这个版本了,新的软件就可以识别老和新通讯协议了。 沈继龙:以为指定了encoding="GBK",那文件就用GBK保存了,这正好理解反了。我是张,我戴顶帽子说明我是张,以便解析软件知道我是谁,如果我戴顶李的帽子,解析软件就认为我是李,显然就出了问题。 3. 接着讲解了CDATA区的作用 <country> <![CDATA[ if(x<y) { } ]]> </country> 要小心的是XML文档是通过一个程序生成出来的,如下所示的一个jsp程序,对于用变量生成的信息,要特别注意加上CDATA区。 <%@page pageEncoding="GBK"%> <%@page contentType="text/xml;charset=UTF-8"%> <?xml version="1.0" encoding="UTF-8"?> <country> <name>中国</name> <info><![CDATA[${param.info}]]></info> </country> 这个JSP文件涉及了两个编码:源文件是用什么码写的,程序执行后以什么码输出结果。 为了加深理解处理软件必须文件中的字符编码的情况,又演示了javac编译utf-8源文件的问题。 4. <%@page contentType="text/html;charset=GBK"%>//修改contentType="audio/x-mp3"说明头的作用 5.最后做了一个识别中英文字符的JAVA程序 class Ce { public static void main(String args[]) throws Exception { byte[] buf = new byte[1024]; int len = System.in.read(buf); for(int i=0;i<len;i++) { /*使用&运算符,让buf[i]与8的二进制码进行与运算,如果最高位为0,则buf[i]为英文,否则为中文*/ if((buf[i]& 0x80) == 0) { if(buf[i]=='\r' || buf[i]=='\n') continue; System.out.write('('); System.out.write(buf[i]); System.out.write(')'); } else { System.out.write('('); System.out.write(buf[i]); System.out.write(buf[++i]); System.out.write(')'); } System.out.flush(); } } }
|