php字符编码转换问题

MySQL使用4.1以上版本,管他是什么字符集,一律使用默认。不用去设置MySQL。
  然后举个使用GB2312和UTF-8的例子。
  好,你只要保证你的写着INSERT SQL语句的PHP文件编码为GB2312,那么恭喜你,你使用写着SELECT SQL语句的GB2312编码的PHP文件读取出来的数据也是GB2312的。
  同理,只要你插入数据库的PHP文件是UTF-8编码,那么你录入的就是UTF-8的,读取出来同样使用编码为UTF-8的读取。
  如果我录入为GB2312,显示要使用UTF-8怎么办,如果你的所有PHP文件为UTF-8编码,那么你在INSERT的时候,就必须使用iconv进行编码转换,将str转为GB2312入库,读取也一样,使用iconv转为UTF-8显示。
  你的前端页面使用什么编码,那么你那些字符串已经被该种编码 编过了,所以,尽管入库,他的机器码肯定就是那样的,不管存放在哪里,不管MYSQL指定为何种编码,他在录入数据的时候,并不会对你的数据进行转换。只要保证你的前端录入使用UTF-8,那么你读取的也是UTF-8。
1) 使用 标签设置页面编码
  这个标签的作用是声明客户端的浏览器用什么字符集编码显示该页面,xxx 可以为 GB2312、GBK、UTF-8(和 MySQL 不同,MySQL 是 UTF8)等等。因此,大部分页面可以采用这种方式来告诉浏览器显示这个页面的时候采用什么编码,这样才不会造成编码错误而产生乱码。但是有的时候我们会发现有了这句还是不行,不管 xxx 是哪一种,浏览器采用的始终都是一种编码,这个情况我后面会谈到。
  请注意, 是属于 HTML 信息的,仅仅是一个声明,仅表明服务器已经把 HTML 信息传到了浏览器。
  2) header(”content-type:text/html; charset=xxx”);
  这个函数 header() 的作用是把括号里面的信息发到 http 标头。如果括号里面的内容为文中所说那样,那作用和 标签基本相同,大家对照第一个看发现字符都差不多的。但是不同的是如果有这段函数,浏览器就会永远采用你所要求的 xxx 编码,绝对不会不听话,因此这个函数是很有用的。为什么会这样呢?那就得说说 http 标头和 HTML信息的差别了:
  http 标头是服务器以 http 协议传送 HTML 信息到浏览器前所送出的字串。而 标签是属于 HTML 信息的,所以 header() 发送的内容先到达浏览器,通俗点就是 header() 的优先级高于 (不知道可不可以这样讲)。假如一个 php 页面既有header(”content-type:text/html;charset=xxx”),又有,浏览器就只认前者 http 标头而不认 meta 了。当然这个函数只能在 php 页面内使用。
  同样也留有一个问题,为什么前者就绝对起作用,而后者有时候就不行呢?这就是接下来要谈的Apache 的原因了。       3) AddDefaultCharset
  Apache 根目录的 conf 文件夹里,有整个 Apache 的配置文档 httpd.conf。
  用文本编辑器打开 httpd.conf,第 708 行(不同版本可能不同)有 AddDefaultCharset xxx,xxx为编码名称。这行代码的意思:设置整个服务器内的网页文件 http 标头里的字符集为你默认的 xxx字符集。有这行,就相当于给每个文件都加了一行 header(”content-type:text/html; charset=xxx”)。这下就明白为什么明明 设置了是 utf-8,可浏览器始终采用 gb2312 的原因。
  如果网页里有 header(”content-type:text/html; charset=xxx”),就把默认的字符集改为你设置的字符集,所以这个函数永远有用。如果把 AddDefaultCharset xxx 前面加个”#”,注释掉这句,而且页面里不含 header(”content-type…”),那这个时候就轮到 meta 标签起作用了。
  下面列出以上的优先顺序:
  .. header(”content-type:text/html; charset=xxx”)
  .. AddDefaultCharset xxx
  ..
 如果你是 web 程序员,建议给你的每个页面都加个header(”content-type:text/html;charset=xxx”),这样就可以保证它在任何服务器都能正确显示,可移植性也比较强。
    4) php.ini 中的 default_charset 配置:
   php.ini 中的 default_charset = “gb2312″ 定义了 php 的默认语言字符集。一般推荐注释掉此行,让浏览器根据网页头中的 charset 来自动选择语言而非做一个强制性的规定,这样就可以在同台服务器上提供多种语言的网页服务。

 

your ads here (468x60) - after 1st post.

表格变形

1.文本不能自动换行
  <table   width=100>  
  <tr><td   style=”word-break:break-  all”>sdfddddddddddddds  </td><tr>  
  </table>
style=”word-break:break-  all” 可以自动换行
2.form表单变形
用FrontPage或Dreamweaver在表格中插入表单时,表单会把表格撑大,严重影响页面其他元素的定位,在这里提供一种解决方法,将<form></form>标签放在<td>和<td>之间,这样FrontPage或Dreamweaver就不会将表格撑大了。举例如下:

  由FrontPage或Dreamweaver生成下列代码:

  <table><tr><td><form>

  ……(提交的内容)

  </form></td></tr></table>

  将其改为:

  <table><tr><form><td>

  ……(提交的内容)

  </td></form></tr></table><head>

  这样便能解决form撑大表格问题。

方法二:

<form style=”margin:0px;”>

……(提交的内容)

</form>

水月


 

 

windows 快捷键

总结了一些日常习惯使用的windows使用技巧,只是自己觉得很实用,都是我常用的
大家一起玩嘛

对快捷键、常用命令小结了一下。

windows使用技巧

快捷键

按Ctrl+shift+esc打开任务管理器,还可以使用命令taskmgr打开
按win+E 打开”我的电脑”
按win+R 打开”运行”
按win+L 立即锁定电脑

在”运行”里常用的命令:

输入gpedit.msc 组策略
输入regedit 注册表
输入cmd 模拟dos命令行
输入net start/stop 服务名 启停一个服务,如mysql服务
输入 services.msc 直接打开”控制面板”-”管理工具”-”服务”
输入explorer 虽然这个打开的是一个SHELL,但是默认打开的就是”我的文档”
输入”.”打开当前登录用户的目录
输入”..” 到所有用户目录

自定义命令”通过在运行里输入命令即可启用的方法”:

简单的说就是:创建快捷方式,命名,剪切到windows根目录,即可在运行里以改快捷方式名作为命令名

打开任何目录和程序
例:给”我的文档”自定义一个能够在”运行”里使用的命令
1、选择”我的文档”右击-创建快捷方式,然后更名此快捷方式为你想要的任何名字,比如mydocument
2、将此快捷方式剪切到你的系统的windows目录下
3、测试,你就可以 开始-运行-mydocument
经测试,此方法对于任何文件夹/文件/可执行程序都实用

其它windows自带能够在运行里使用的我常用的命令:

logoff注销命令
calc启动计算器
dxdiag打开DX诊断工具
dvdplay打开DVD播放器,其实就是windows media player
ntbackup打开系统备份和还原向导
sndrec32打开录音机,可以对着话筒录音并且保存为wav声音文件,很有趣
rsop.msc组策略结果集
Clipbrd剪贴板查看器
odbcad32打开ODBC数据源管理器

compmgmt.msc打开计算机管理
lusrmgr.msc打开本地用户和组,一个很有用的命令
control userpasswords2打开用户帐户设置
nusrmgr.cpl或control userpasswords打开图形化的用户帐户控制面板

appwiz.cpl打开添加或删除程序窗口
cleanmgr打开垃圾整理设置
dfrg.msc打开磁盘碎片整理程序
devmgmt.msc打开设备管理器,查看是否安装成功驱动程序时要用
msconfig打开系统配置实用程序
oobe/msoobe /a 检查XP是否激活
route print查看路由表
secpol.msc打开本地安全策略
winchat打开XP自带局域网聊天程序
Nslookup打开IP地址侦测器
utilman打开辅助工具管理器,里面可以打开放大镜和屏幕键盘,放大镜很有趣,很多人都说放大镜是IBM

笔记本的自带的功能,其实台式机器也有嘛。

 

帝国时代2 民族心得

帝国时代2 民族心得
对于民族的优势,评说很多,笔者就从自己联线实战浅见的经验来谈一谈。

民族之间有相克,这是比较明显的。

由于帝国2的快抄很不容易,上来除非水平悬殊,一般只能骚扰对方。对于易守难攻的地图(象黑森林)强烈建议在封建时代建造城墙。一旦城墙造完,一般可以安心发展至帝王时代。

中国在发展速度上有优势,可惜后劲不足,在军事上难有较大作为。中国没有优秀的攻城武器,没有游侠,海战上也不行。诸葛弩的弱让人叹息不已。即使是大规模的诸葛弩,也难以抵挡哪怕是敌人轻骑兵的大举入侵。在对重骑士和游侠中更是不堪一击。就算同是弓兵,也不是同数量劲弩手(射程比诸葛弩多1)的对手。对于使用中国来说,应该尽快进攻以免贻误战机。

日本在联机对战特别是陆战时,毫无优势可言。日本武士建议不要造,因为不是同数量圣剑士的对手,价钱也贵于前者。

蒙古历史上是很厉害的民族,可惜游戏中未能体现。蒙古的骑射手价格昂贵,作用却不是很明显。用蒙古人应该发挥其轻骑兵血长的优势,用漫山遍野的轻骑兵打敌人一个措手不及。轻骑兵在城堡时代就可以大量制造,可以严重削弱敌人的发展速度(前提是:至少要25个种田的农民和4个以上马屋)。因为轻骑兵只要80个食物,不断进攻可以瓦解敌人的力量,最后用蒙古骑射手和打包投石机送敌人上西天。

阿拉伯是一个很优秀的民族。虽然在骑兵方面很弱,可是奴隶骆驼兵少有对手,是游侠和所有骑兵类天然的克星。40个奴隶骑兵时可以几乎无兵可胜。即便是法兰西的游侠也根本不是对手。配合其余弱兵种和打包投石机即可全胜。只是比较昂贵,比游侠略贵(85     gold)。升级却是所有特殊兵种中最便宜的(500 gold)。可以说是法兰西、拜占庭的天然克星。   

不列颠的长弓兵是所有弓箭武器中最优秀的,升到顶后11格的射程确实非同一般。一般初学者使用极佳(因为长弓兵无须多少指挥,只要规模大就行)。不过在对付骑兵时不占优势,尤其是对付法兰西的游侠,拜占庭的甲胄骑士时比较吃力。   

土耳其亲兵弱点很多,比如对付骑兵,不列颠长弓兵都吃亏。但却是很少的能大败阿拉伯骆驼兵的兵种。作为辅助进攻的兵种还是很合算的。   

拜占庭作为防守性民族,实力非常强大。强有力的甲胄骑兵即使是对条顿武士也毫不逊色。所有的兵种都能发展,而防御性兵种(如长枪兵、掷矛手)特别便宜。所以可以说是综合实力最强的民族之一。除了对付阿拉伯比较亏以外,基本没有对付不了的民族。   

法兰西游侠的威力,各位应该有数,我就不罗嗦了。城堡便宜也是一大优势,城堡里的掷斧武士可以对付多种步兵尤其是长枪兵。   

波斯人工作效率高,发展快。象兵威力虽大但弱点奇多,不能没有别的兵种辅助。毫无疑问战象在正面交锋中是无可匹敌的,却也是帝国2里华而不实的兵种的典型。首先价格太贵,不到后期造不起,也没钱升级;其次机动性太差,游侠可避其锋芒,绕道攻克敌城;再次是抗召唤能力极低,笔者曾用十个僧侣尽召敌人战象,倒戈相向,成为攻敌之先遣;最后是战象在对长枪兵的战斗中损失惨重,实在惨不忍睹。建议用战象者小心。如用游侠或轻骑兵配合象兵的作战方式,应该注意的是粮食的供给问题。   

哥特人无法建造城墙,在封建时代就应该注意军备,因此适合快抄。哥特人的步兵强大,哥特近卫军对弓箭的防御极佳,对付任何弓箭民族(如不列颠)效果都很好。   

凯尔特人总体来说没有特别的弱点。靛蓝突击队行走速度很快,价钱便宜,适合对付长枪兵和建筑物。攻城武器便宜且强大。   

条顿是防御性民族,这从条顿武士超强的防御力就可以看出。超过10的铠甲令条顿武士在近战对骑兵时占尽便宜。笔者曾用20余个条顿武士配合僧侣加血大败40个法兰西游侠,几乎没有什么损失。条顿武士可以击败游侠,阿拉伯奴隶骑兵,是很厉害的兵种。如果配合僧侣加血就很难对付。缺点是机动性能太差,对弓兵没多大优势。在小地图的作战中比较合算。对付拜占庭甲胄骑士比较差。   

维京人的优势在于海战。从发展来说,免升独轮车、手推车的技术实在是一大优势。步兵(包括长枪兵)血长,光用步兵进攻就不错。   

以下兵种相克为我一一测试而得(40 VS 40)   

圣剑士:克除条顿武士外各种步兵类兵种   

天敌:各类骑兵、劲弩手、火枪手、土耳其亲兵、投石车、拜占庭甲胄骑士、骑射手、蒙古骑射手、法兰西掷斧武士   

长枪兵:克轻骑兵、骆驼兵、重装骑士、虽败于游侠、象兵,不过资源上算还是赚的   

天敌:各类步兵、远程进攻兵种、法兰西掷斧武士   

劲弩手:克剑士系、长枪兵、法兰西掷斧武士   

天敌:骑士系、拜占庭甲胄骑士,不列颠长弓兵、哥特近卫军   

掷矛手:克弓兵系、火枪兵   

天敌:各类骑兵、步兵   

重装骑射手:克除哥特近卫军以外的各类步兵   

天敌:劲弩手、不列颠长弓兵、骑士系   

火枪手:克各类步兵   

天敌:各类骑兵、掷矛手、不列颠长弓兵   

轻骑兵:克剑士系、各类弓兵、火枪手、土耳其亲兵、掷矛手、各种攻城武器、法兰西掷斧武士   

天敌:骑士系、长枪兵、骆驼兵、阿拉伯奴隶骆驼兵   

游侠:克除条顿武士、长枪兵以外的各类步兵、弓兵、火枪手、掷矛手、各种攻城武器、轻骑兵、拜占庭甲胄骑士、土耳其亲兵   

天敌:阿拉伯奴隶骆驼兵、战象、条顿武士,虽然胜骆驼兵、长枪兵但损失很大   

骆驼兵:克轻骑兵、骑士系、拜占庭甲胄骑士、各种攻城武器   

天敌:长枪兵   

诸葛弩:克除哥特近卫军、靛蓝突击队以外的各类步兵   

天敌:哥特近卫军、不列颠长弓兵、各类骑兵、掷矛手、投石车   

日本武士:据说克特殊兵种,也没见他能克谁   

天敌:圣剑士、各类骑兵、劲弩手、火枪手、投石车、拜占庭甲胄骑士、骑射手、蒙古骑射手、土耳其亲兵、法兰西掷斧武士   

蒙古骑射手:克除哥特近卫军以外的各类步兵   

天敌:骑士系   

阿拉伯奴隶骆驼兵:克各类骑兵、能令战象损失惨重   

天敌:条顿武士、土耳其亲兵、火枪手、大量重型弩车   

不列颠长弓兵:克除哥特近卫军、靛蓝突击队以外的各类步兵、各类弓兵、火枪手、土耳其亲兵   

天敌:各类骑兵、哥特近卫军   

土耳其亲兵:克除靛蓝突击队以外各类步兵、阿拉伯奴隶骆驼兵   

天敌:各类骑兵、不列颠长弓兵   

拜占庭甲胄骑士:克各类步兵、轻骑兵、各类弓兵、火枪手、掷矛手、各种攻城武器、土耳其亲兵   

天敌:阿拉伯奴隶骆驼兵、游侠、重装骆驼兵   

法兰西掷斧武士:克除条顿武士外的各类步兵   

天敌:各类骑兵、远程进攻兵种、条顿武士   

波斯战象:克各种近战兵种,但遇长枪兵损失较大   

天敌:僧侣   

哥特近卫军:克各种弓兵   

天敌:圣剑士、各类骑兵、火枪手、投石车、拜占庭甲胄骑士、土耳其亲兵、法兰西掷斧武士   

凯尔特靛蓝突击队:克长枪兵   

天敌:圣剑士、各类骑兵、拜占庭甲胄骑士、骑射手、蒙古骑射手、法兰西掷斧武士   

条顿武士:克除拜占庭甲胄骑士外的各类骑兵、各类步兵 
天敌:拜占庭甲胄骑士、各类远程进攻兵种、投石车
维京狂战士:克长枪兵 
天敌:圣剑士、各类骑兵、劲弩手、火枪手、投石车、拜占庭甲胄骑士、骑射手、蒙古骑射手、土耳其亲兵、法兰西掷斧武士    各兵种对建筑物性能一览:   

(以发展过工兵技术的农民为100%折算)
打包投石机: 889% 
重型攻城车: 533%  
重型投石车: 480%  
火炮: 400%  
战象: 218%  
日本武士: 171%   
条顿武士: 171%   
游侠: 133%  
狂战士: 133% 
哥特近卫军: 133%
靛蓝突击队: 133% 
圣剑士: 133%   
农民: 100%   
奴隶骆驼兵: 92%   
掷斧武士: 92%   
甲胄骑士: 86%   
轻骑兵: 57%   
重装骆驼兵: 57%   
重型弩车: 50%  
土耳其亲兵: 35% 
长枪兵: 32%  
火枪兵: 29%
诸葛弩: 24% 
蒙古骑射手: 13%   
劲弩手: 10%   
长弓兵: 10%   
重装骑射手: 10% 
精锐掷矛手: 7%

这一滴泪,可是你为我而流

 

      “曾经有一份真挚的感情放在我的面前,我没有珍惜,等到失去才追悔莫及.人世间最痛苦的事莫过于此.如果上天可以给我重来一次的机会,我会对那个女孩子说我爱你;如果非要在这份爱上加一个期限的话,我希望是一万年.”    很多人难忘周兴驰的这段经典对白,更有不乏将其改编成短信转发心上人的事例.要知道,周兴驰在大话西游里第二遍说这段台词的时候,没有人怀疑他是在撒谎.

    影片里,紫霞仙子在至尊宝的心里留下了一滴眼泪,当春三十娘一剑剖开至尊宝的胸膛时,他才明白心中所爱,正如白晶晶所言,经过这五百年,至尊宝回来要找的人不是她,而是紫霞仙子.”你我都要相信这是命中注定,也是传说中的缘份.”而最终变回齐天大圣孙悟空的至尊宝为担负护送唐僧西天取经的重任,也没能和紫霞仙子在一起.一段神仙之恋被演绎得凄凄惨惨.

    而影片最后趋近于完美结局的表演同样让人喜不自禁.至尊宝在城墙上,在万众瞩目下抱着紫霞仙子说:”我这一辈子都不会离开你,我爱你.”正是有情人终成眷属.

英语考试

对我来说,英语是废的,学了这么多年的英语还真的是没认真学啊,对英语还是学的不好!
经常看电影的,听老外讲英语还是很优美的,也不是很难理解!
现在英语只是为了应付考试,自己没兴趣看英语书藉,也没兴趣说英语。
考试都过不了,还真的是没有办法呢!
明天又要考试但又不想看书!
如果自己以前认真学习,现在就不会这样狼狈了,还考了不止一次了!郁闷
英语现在来说,对就业的影响还是很重要的。
你的英语好,而且你是男的,那可以说明你学习有耐心,可以坚持,下功夫
老师强调学好英语对以后的帮助很大,特别是对我们这种程序员来说,
对于看原著的书藉啊,还真是没办法,李老师会买很多外国书籍,学无止境啊,
学习还是学习,有米咧一本几百美元,还说买了放在那里,觉得心理踏实。
服了他!
那次英语考试还真的要感谢我的同学,但分班了,由衷感谢!
对某些人来说学英语不是一件难事,有时我想不考也罢,
但这样太对不起自己了,努力点,自己可以的!我应该相信自己,哈哈!

常用字符集编码的概要特性

常用字符集编码的概要特性(一)

搞清常用编码特性是解决字符集编码问题的基础。字符集编码的识别与转换、分析各种乱码产生的原因、编程操作各种编码字符串(例如字符数计算、截断处理)等都需要弄清楚编码的特性。

了解一种字符集编码主要是要了解该编码的编码范围,编码对应的字符集(都包含哪些字符),和其他字符集编码之间的关系等。

ASCII

ASCII码是7位编码,编码范围是0×00-0×7F。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。其中0×00-0×20和0×7F共33个控制字符。

只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。HZ字符编码就是早期为了在只支持7位ASCII系统中传输中文而设计的编码。早期很多邮件系统也只支持ASCII编码,为了传输中文邮件必须使用BASE64或者其他编码方式。

GB2312

GB2312是基于区位码设计的,区位码把编码表分为94个区,每个区对应94个位,每个字符的区号和位号组合起来就是该汉字的区位码。区位码一般 用10进制数来表示,如1601就表示16区1位,对应的字符是“啊”。在区位码的区号和位号上分别加上0xA0就得到了GB2312编码。

区位码中01-09区是符号、数字区,16-87区是汉字区,10-15和88-94是未定义的空白区。它将收录的汉字分成两级:第一级是常用汉字 计3755个,置于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,置于56-87区,按部首/笔画顺序排列。一级汉 字是按照拼音排序的,这个就可以得到某个拼音在一级汉字区位中的范围,很多根据汉字可以得到拼音的程序就是根据这个原理编写的。

GB2312字符集中除常用简体汉字字符外还包括希腊字母、日文平假名及片假名字母、俄语西里尔字母等字符,未收录繁体中文汉字和一些生僻字。可以用繁体汉字测试某些系统是不是只支持GB2312编码。

GB2312的编码范围是0xA1A1-0×7E7E,去掉未定义的区域之后可以理解为实际编码范围是0xA1A1-0xF7FE。

EUC-CN可以理解为GB2312的别名,和GB2312完全相同。

区位码更应该认为是字符集的定义,定义了所收录的字符和字符位置,而GB2312及EUC-CN是实际计算机环境中支持这 种字符集的编码。HZ和ISO-2022-CN是对应区位码字符集的另外两种编码,都是用7位编码空间来支持汉字。区位码和GB2312编码的关系有点像 Unicode和UTF-8。

GBK

GBK编码是GB2312编码的超集,向下完全兼容GB2312,同时GBK收录了Unicode基本多文种平面中的所有CJK汉字。同 GB2312一样,GBK也支持希腊字母、日文假名字母、俄语字母等字符,但不支持韩语中的表音字符(非汉字字符)。GBK还收录了GB2312不包含的 汉字部首符号、竖排标点符号等字符。

GBK的整体编码范围是为0×8140-0xFEFE,不包括低字节是0×7F的组合。高字节范围是0×81-0xFE,低字节范围是0×40-7E和0×80-0xFE。

低字节是0×40-0×7E的GBK字符有一定特殊性,因为这些字符占用了ASCII码的位置,这样会给一些系统带来麻烦。

有些系统中用0×40-0×7E中的字符(如“|”)做特殊符号,在定位这些符号时又没有判断这些符号是不是属于某个 GBK字符的低字节,这样就会造成错误判断。在支持GB2312的环境下就不存在这个问题。需要注意的是支持GBK的环境中小于0×80的某个字节未必就 是ASCII符号;另外就是最好选用小于0×40的ASCII符号做一些特殊符号,这样就可以快速定位,且不用担心是某个汉字的另一半。Big5编码中也存在相应问题。

CP936和GBK的有些许差别,绝大多数情况下可以把CP936当作GBK的别名。

GB18030

GB18030编码向下兼容GBK和GB2312,兼容的含义是不仅字符兼容,而且相同字符的编码也相同。GB18030收录了所有Unicode3.1中的字符,包括中国少数民族字符,GBK不支持的韩文字符等等,也可以说是世界大多民族的文字符号都被收录在内。

GBK和GB2312都是双字节等宽编码,如果算上和ASCII兼容所支持的单字节,也可以理解为是单字节和双字节混合的变长编码。GB18030编码是变长编码,有单字节、双字节和四字节三种方式。

GB18030的单字节编码范围是0×00-0×7F,完全等同与ASCII;双字节编码的范围和GBK相同,高字节是0×81-0xFE,低字节 的编码范围是0×40-0×7E和0×80-FE;四字节编码中第一、三字节的编码范围是0×81-0xFE,二、四字节是0×30-0×39。

Windows中CP936代码页使用0×80来表示欧元符号,而在GB18030编码中没有使用0×80编码位,用其他位置来表示欧元符号。这可以理解为是GB18030向下兼容性上的一点小问题;也可以理解为0×80是CP936对GBK的扩展,而GB18030只是和GBK兼容良好。
常用字符集编码的概要特性(二)

BIG5

Big5是双字节编码,高字节编码范围是0×81-0xFE,低字节编码范围是0×40-0×7E和0xA1-0xFE。和GBK相比,少了低字节是0×80-0xA0的组合。0×8140-0xA0FE是保留区域,用于用户造字区。

Big5收录的汉字只包括繁体汉字,不包括简体汉字,一些生僻的汉字也没有收录。GBK收录的日文假名字符、俄文字符Big5也没有收录。因为Big5当中收录的字符有限,因此有很多在Big5基础上扩展的编码,如倚天中文系统。Windows系统上使用的代码页CP950也可以理解为是对Big5的扩展,在Big5的基础上增加了7个汉字和一些符号。Big5编码对应的字符集是GBK字符集的子集,也就是说Big5收录的字符是GBK收录字符的一部分,但相同字符的编码不同。

因为Big5也占用了ASCII的编码空间(低字节所使用的0×40-0×7E),所以Big5编码在一些环境下存在和GBK编码相同的问题,即低字节范围为0×40-0×7E的字符有可能会被误处理,尤其是低字节是0×5C(”/”)和0×7C(”|”)的字符。可以参考GBK一节相应说明。

尽管有些区别,大多数情况下可以把CP950当作Big5的别名。

ISO-8859-1

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0×00-0xFF,0×00-0×7F之间完全和ASCII一致,0×80-0×9F之间是控制字符,0xA0-0xFF之间是文字符号。

ISO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。欧元符号出现的比较晚,没有被收录在ISO-8859-1当中。

因为ISO-8859-1编码范围使用了单字节内的所有空间,在支持ISO-8859-1的系统中传输和存储其他任何编码的字节流都不会被抛弃。换言之,把其他任何编码的字节流当作ISO-8859-1编码看待都没有问题。这是个很重要的特性,MySQL数据库默认编码是Latin1就是利用了这个特性。ASCII编码是一个7位的容器,ISO-8859-1编码是一个8位的容器。

Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。

UCS-2和UTF-16

Unicode组织和ISO组织都试图定义一个超大字符集,目的是要涵盖所有语言使用的字符以及其他学科使用的一些特殊符号,这个字符集就是通用字符集(UCS,Universal Character Set)。这两个组织经过协调,虽然在各自发展,但定义的字符位置是完全一致的。ISO相应的标准是ISO 10646。Unicode和ISO 10646都在不断的发展过程中,所以会有不同的版本号来标明不同的发展阶段,每个Unicode版本号都能找到相对应的ISO 10646版本号。

ISO 10646标准定义了一个31位的字符集。前两个字节的位置(0×0000-0xFFFD)被称为基本多语言面(Basic Multilingual Plane, BMP) ,超出两个字节的范围称作辅助语言面。BMP基本包括了所有语言中绝大多数字符,所以只要支持BMP就可以支持绝大多数场合下的应用。Unicode 3.0对应的字符集在BMP范围内。

UCS字符集为每个字符分配了一个位置,通常用“U”再加上某个字符在UCS中位置的16进制数作为这个字符的UCS表示,例如“U+0041”表示字符“A”。UCS字符U+0000到U+00FF与ISO-8859-1完全一致。

UCS-2、UTF-16是UCS字符集(或者说是Unicode字符集)实际应用中的具体编码方式。UCS-2是两个字节的等宽编码,因为只是使用了两个字节的编码空间,所以只能对BMP中的字符做编码。UTF-16是变长编码,用两个字节对BMP内的字符编码,用4个字节对超出BMP范围的辅助平面内的字符作编码。

UCS-2不同于GBK和Big5,它是真正的等宽编码,每个字符都使用两个字节,这个特性在字符串截断和字符数计算时非常方便。

UTF-16是UCS-2的超集,UTF-16编码的两字节编码方式完全和UCS-2相同,也就是说在BMP的框架内UCS-2完全等同与UTF-16。实际情况当中常常把UCS-16当作UCS-2的别名。

UCS-2和UTF-16在存储和传输时会使用两种不同的字节序,分别是big endian和little endian(大尾和小尾)。例如“啊”(U+554A)用big endian表示就是0×554A,用little endian表示就是0×4A55。UCS-2和UTF-16默认的字节序是big endian方式。在传输过程中为了说明字节序需要在字节流前加上BOM(Byte order Mark),0xFEFF表示是big endian,0xFFFE表示是little endian。UCS-2BE、UCS-2LE是实际应用中使用的编码名称,对应着big endian和little endian,UTF-16BE、UTF-16LE也是如此。因为默认是BE字节序,所以可以把UCS-2当做是UCS-2BE的别名。

在UCS编码中有一个叫做“ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是U+FEFF,是个没有实际意义的字符。UCS规范建议我们在传输字节流前,先传输字符“ZERO WIDTH NO-BREAK SPACE”,如果传输的ZERO WIDTH NO-BREAK SPACE是0xFEFF就说明是big endian,反之就是little endian。

UCS-2和UTF-16也可以理解为和ASCII以及ISO-8859-1兼容,在ASCII编码或者ISO-8859-1编码的每个字节前加上0×00,就得到相应字符的UCS-2编码。

UCS-2和UTF-16中会使用0×00作为某个字符编码的一部分,某些系统会把0×00当作字符串结束的标志,在处理UCS-2或UTF-16编码时会出现问题。

UTF-8

UTF-8是UCS字符集的另一种编码方式,UTF-16的每个单元是两个字节(16位),而UTF-8的每个单元是一个字节(8位)。UTF-16中用一个或两个双字节表示一个字符,UTF-8中用一个或几个单字节表示一个字符。

可以认为UTF-8编码是根据一定规律从UCS-2转换得到的,从UCS-2到UTF-8之间有以下转换关系:UCS-2 UTF-8
U+0000 - U+007F 0xxxxxxx
U+0080 - U+07FF 110xxxxx 10xxxxxx
U+0800 - U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
例如“啊”字的UCS-2编码是0×554A,对应的二进制是0101 0101 0100 1010,转成UTF-8编码之后的二进制是1110 0101 10 010101 10 001010,对应的十六进制是0xE5958A。

UCS-4也是一种UCS字符集的编码方式,是使用4个字节的等宽编码,可以用UCS-4来表示BMP之外的辅助面字符。UCS-2中每两个字节前再加上0×0000就得到了BMP字符的UCS-4编码。从UCS-4到UTF-8也存在转换关系,根据这种转换关系,UTF-8最多可以使用六个字节来编码UCS-4。

根据UTF-8的生成规律和UCS字符集的特性,可以看到UTF-8具有的特性:
UTF-8完全和ASCII兼容,也就是说ASCII对应的字符在UTF-8中和ASCII编码完全一致。范围在0×00-0×7F之内的字符一定是ASCII字符,不可能是其他字符的一部分。GBK和Big5都存在的缺陷在UTF-8中是不存在的。
大于U+007F的UCS字符,在UTF-8编码中至少是两个字节。
UTF-8中的每个字符编码的首字节总在0×00-0xFD之间(不考虑UCS-4支持的情况,首字节在0×00-0xEF之间)。根据首字节就可以判断之后连续几个字节。
非首字节的其他字节都在0×80-0xBF之间;0xFE和0xFF在UTF-8中没有被用到。
GBK编码中的汉字字符都在UCS-2中的范围都在U+0800 - U+FFFF之间,所以每个GBK编码中的汉字字符的UTF-8编码都是3个字节。但GBK中包含的其他字符的UTF-8编码就不一定是3个字节了,如GBK中的俄文字符。

在UTF-8的编码的传输过程中即使丢掉一个字节,根据编码规律也很容易定位丢掉的位置,不会影响到其他字符。在其他双字节编码中,一旦损失一个字节,就会影响到此字节之后的所有字符。从这点可以看出UTF-8编码非常适合作为传输编码。

要开动啦

上来三个月的课,现在快学完asp.net了,asp.net做起网站来比asp容易多了,
没有那么多的代码量,自己自学了php但php开发环境没有微软公司那么好的开发软件,但是有
了软件开发反而贬低了软件开发
的价值了,所以现在还是喜欢php的人多,用php的人多。。
我们小组兴致勃勃的讨论怎样弄好网站,还没有开始,学习了asp.net使得自己开发
自己的网站系统成为可能,我们努力啊,一定要做大做强,,
这也是锻炼自己能力的时候,,,,,,,,

修改网卡地址上网

我们的电脑一般都只有一个网卡,也就只有一个网卡地址,
如何知道自己的网卡地址:
在cmd命令行敲ipconfig /all可以查看到你的网卡地址,例如我的
网卡的是有这么一行可以看到
Physical Address. . . . . . . . . : 00-14-85-82-6F-62
如何修改网卡地址:
右键本地链接属性,常规/配置/高级/Network Address选项
在这里你就可以修改你的网卡地址 了.
如何知道别人的网卡地址:
在cmd中敲 “arp -a 另一太电脑的ip地址”即可
修改网卡地址的用处:
伪装自己的ip地址,和别的电脑ip地址相同实现上网,
像我们学校如果非上网开放时段上网需要用户登录帐号密码,
如果已经有别的同学登录上网了,你只需要知道他的电脑的ip地址,
然后查他的网卡地址,修改网卡地址就可以上网了.

有些时候常规/配置/高级/ 并没有Network Address选项,这时你
可以下载软件修改.