Monthly Archives: August 2009

网页中文乱码问题之不完全分析

前几天帮实验室弄个页面,遇到了中文乱码的问题,在网上找了些资料最终解决了,在这里总结一下。

GB2312 – GBK – GB18030这三者是兼容的,但它们与UTF-8编码不兼容,这就是导致乱码问题的原因。如果你发现网页乱码,需要检查的地方有如下几个:

(1)网页文件本身。假设这是一个静态html文件,不同的文本编辑器(或者不同的选项)做出的文本文件的编码可能是不同的。我这次遇到的问题就是这样,用DreamWeaver保存出来的网页文件是GB18030编码(可能是我没有注意到软件里的选项设置),但我在其它的所有地方都声明编码方式是UTF-8,于是在FireFox下就出现了乱码,不过IE居然可以很威武地正常显示。建议使用稍高级一点的文本编辑器(比如win下的UltraEdit, Editplus等等都可以)把编码方式转换一下,使其与其他地方的配置一致。

(2)Apache的配置文件。在httpd.conf这个文件里有个AddDefaultCharset,这里可以设置默认的编码方式。这个东西会在浏览器向服务器发送请求时,包含在HTTP头信息中返回给浏览器。

(3)网页的<meta>标签。一个典型的代码是这样的

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

这样就声明了网页是UTF-8的编码。

(4)网页脚本文件,如PHP里可以写

header(“content-type:text/html; charset=utf-8″)

据说这个替换掉HTTP头的信息,我没有试过,不太清楚。

因为有这么多地方可以配置,当这些地方的配置出现不一致时,问题就出来了。<meta>标签,HTTP头,页面文件本身的编码,到底谁的优先级更高,不同的浏览器是不一样的。所以常会出现在IE下可以但在FF下乱码,或者反过来的情况。总之最好是让它们都保持一致啦。

另外,还有一种情况是数据库的乱码,等以后遇到了再说。

社会化网络分析概述

发现已经一个多月没有写Blog了,不是因为多忙,而是因为每次写完之后隔不了两天回头再看时就会发现我的文章里充满SB之处,颇觉对不起订阅此Blog的童鞋们,久而久之就不敢写了。但是不写又实在憋得慌,本来弄了一个笔记本,发现很不习惯,所以我终于又重新开始更新了。不过特此声明:

“所谓学术”下的所有原创文章,因为水平有限,作者不能保证内容的正确性与完备性,所以请用批评的眼光对待,欢迎各种形式的指点与讨论。

本文主要取自M. Newman的The structure and function of complex networks.

所谓Social Network简单来说就是研究社会里的人们之间的联系的。Network顾名思义是一个网络(图),人就是图中的点,人们之间的关系就是图中的边。根据研究对象的不同,这个边可以为有向或无向,带权或不带权,等等。

这个东西看上去应该是社会学家研究的才对,[我以为]实际上也确实是这样,对社会化网络的研究在上世纪初二三十年代就有了,那时候的计算机科学怎么说也是还在襁褓之中。但是因为后来研究的规模越来越大,所以才有了统计和计算机的用武之地。早期研究的社会化网络中不过几十最多上百个点,只要把这个图画出来,网络中的很多特性就一目了然了。比如有几个cluster,网络的连通程度等等。Newman的那篇文章里说得好:人的肉眼是最敏锐的分析器。但是如果这个网络里有几万几十万个点——在现在的Web时代这个真没什么大不了——这时人眼就完全不好使了,这时候就需要数学工具来帮我们分析了,所以数学家和计算机科学家就来插一腿了。

当然,在早期也有非常杰出的研究,比如著名的六度空间理论。我现在才知道这个结论到底是怎样得出的:研究人员从美国的一个州随机选择一些人,要求这些人把一份文件邮寄给在另一个远方的州随机选择的人,研究人员会把接收方的一些信息告诉发送方,比如职业等等,发送方应该选择他认为最有可能成功的方式,把文件寄给他的一个熟人,要求让这个熟人再想办法继续转发。在最后终于成功到达接收方的那些文件中,发现平均的中转次数在5~6次,这就是这个理论的由来。这个现象又被称为"Small World"现象,严格一点来说是,随着网络点数n的线性增加,网络中结点之间的平均距离以不超过对数的速度增加,这个现象在很多社会网络中都存在,包括我们的WWW。

这次没啥实质内容,先写这么多吧。

ps. 今天七夕节,祝天下有情人终成眷属。