摘要: UTF-8: 3字节一个字符UNICODE: 2字节一个字符GB2312: 1字节一个字符例子:“你”字的UTF-8编码: E4 BD A0 11100100 10111101 10100000“你”的Unicode编码: 4F 60 01001111 01100000按照UTF-8的编码规则,分解如下:xxxx0100 xx111101 xx100000,把除了x之外的数字拼接在一起,就变成“你”的Unicode编码了。注意UTF-8的最前面3个1,表示整个UTF-8串是由3个字节构成的。经过UTF-8编码之后,再也不会出现敏感字符了,因为最高位始终为1。... 阅读全文
posted @ 2013-07-15 17:29 编程狂热者 阅读(3527) 评论(0) 推荐(0) 编辑
摘要: 在软件的编码和实现中,我们可能会碰到个一个比较头疼的问题--编码,不同字符间的编码和解码,你确定了解各种字符的编码吗?一个朋友问到了我这个问题,我虽然能回答一两个出来,但是感觉已经有点模糊,混乱了,在网上搜了搜,在书上翻了翻,总结一下吧。首先按照字符编码的历程来看:1. ASCII我们需要了解的最早编码是ASCII码。它用7个二进制位来表示,由于那个时期生产的大多数计算机使用8位大小的字节,因此用户不仅可以存放所有可能的ASCII字符,而且有整整一位空余下来。如果你技艺高超,可以将该位用做自己离奇的目的:WordStar中那个发暗的灯泡实际上设置这个高位,以指示一个单词中的最后一个字母,同时这 阅读全文
posted @ 2013-07-15 17:25 编程狂热者 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 缓存网页到现在为止,我们正在写一些相当复杂的代码。 服务器必须停下来分析每个动态生成的网页。你可以很简单地编写一个函数象上面的dotable(),但是,可怜的老服务器不得不做更多的工作来生成结果。有时候,这能导致你的页面显示起来比较慢。 对这点可能没有什么好办法。如果你正在写报告,每次写得都不一样,你只能等待。 然而,你可能生成将会保持一段时间内容不变的网页。比如说一篇博客,在你提交下一篇之前,你没有什么变化,如果有一千个读者来看你的博客,每个视图都是一样的,而你却需要浪费时间去动态生成同样的页面,一次又一次。解决之道是缓存网页。你一次生成网页,然后把生成的HTML文件保存在缓存目录中,加上一 阅读全文
posted @ 2013-07-15 14:52 编程狂热者 阅读(1097) 评论(0) 推荐(0) 编辑
摘要: 用法要使用Boost.Regex, 你需要包含头文件"boost/regex.hpp". Regex是本书中两个需要独立编译的库之一(另一个是Boost.Signals)。你会很高兴获知如果你已经构建了Boost— —那只需在命令提示符下打一行命令——就可以自动链接了(对于Windows下的编译器),所以你不需要为指出那些库文件要用而费心。你要做的第一件事就是声明一个类型basic_regex的变量。这是该库的核心类之一,也是存放正则表达式的地方。创建这样一个变量很简单;只要将一个含有你要用的正则表达式的字符串传递给构造函数就行了。boost::regex reg(&quo 阅读全文
posted @ 2013-07-15 13:48 编程狂热者 阅读(1009) 评论(0) 推荐(1) 编辑
摘要: Unicode :宽字节字符集 1. 如何取得一个既包含单字节字符又包含双字节字符的字符串的字符个数? 可以调用Microsoft Visual C++的运行期库包含函数_mbslen来操作多字节(既包括单字节也包括双字节)字符串。 调用strlen函数,无法真正了解字符串中究竟有多少字符,它只能告诉你到达结尾的0之前有多少个字节。 2. 如何对DBCS(双字节字符集)字符串进行操作? 函数 描述 PTSTR CharNext ( LPCTSTR ); 返回字符串中下一个字符的地址 PTSTR CharPrev ( LPCTSTR, LPCTSTR ); ... 阅读全文
posted @ 2013-07-15 11:41 编程狂热者 阅读(469) 评论(0) 推荐(0) 编辑