20.6 在CGI中使用Unicode编码

在第6章中,我们介绍了Unicode字符串的使用。在6.8.5部分,我们给了个简单的例子脚本:取得Unicode字符串,写入一个文件,并重新读出来。在这里,我们将演示一个具有Unicode输出的简单CGI脚本,并给浏览器足够的提示,从而可以正确的生成这些字符。唯一的要求是你的计算机必须装有对应的东亚字体以便浏览器可以显示它们。

为了看到Unicode的作用,我们将会用CGI脚本生成一个多语言功能的Web页面。首先我们用Unicode字符串定义一些消息。我们假设你的编辑器只能输入ASCII编码。因此,非ASCII编码的字符使用\u转义符输入。实际上从文件或数据库中也能读取这些消息。

20.6 在CGI中使用Unicode编码 - 图1

CGI产生的第一个头信息指出内容类型(content-type)是HTTP。此处还声明了消息是以UTF-8编码进行传输的,这点很重要,这样浏览器才可以正确的解释它。

20.6 在CGI中使用Unicode编码 - 图2

例20.7 简单Unicode CGI示例(uniCGI.py)

这个脚本输出到你Web浏览器端的是Unicode字符串。

20.6 在CGI中使用Unicode编码 - 图3

然后输出真正的消息。事先用string类的encode()方法先将这个字符串转换成UTF-8序列。

20.6 在CGI中使用Unicode编码 - 图4

例20.7中显示了完整的程序。

如果你在你的浏览器中运行这个CGI,你将会获得如图20-13所示的输出。

20.6 在CGI中使用Unicode编码 - 图5

图 20-13 简单的CGI Unicode编码在Firefox上的输出(uniCGI.py)