[原创] 如何让 Apache 支持中文 URL
时间:2008-03-09 来源:ailms
和中文显示有关 :
1、要有含有该字符的 character repertoire (不是字符集,就是只包含抽象的字符,不包含字符的编码)。 Unicode 这个 character repertoire 包含了几乎所有可能的字符。例如 en_US.UTF-8 中的 UTF-8 指的就是使用 Unicode 这个 character repertoire ,注意!即使前面是 en_US ,它也可以正确显示中文,因为它使用的是 Unicode 这个“超大字符集”,里面已经包含了中文。但这个环境下默认不能输入中文,这是由 en_US 决定的,或者说由 LC_CTYPE 决定的。 它决定了你可以输入的 Unicode 字符的范围 。
2、必须知道该字符的编码(character encoding)是什么类型的,例如中文的有 GBK, GB12345, GB18030—2000, Big5, Big5+, HKSCS, Big5+HKSCS, CNS 11643-1992、UTF-8、GB2312-1980, GB13000),具体的 code value 是多少(内码)。 Unicode 这个 character repertorie 所使用的编码有好几种,例如 UTF-8、UTF-16、UTF-32 等
3、有相应的字体文件
4、要修改排序顺序,只需要修改 LC_COLLATE 就可以了 (强烈建议设置)
5、要修改显示时间,只需要修改 LC_TIME 就可以了 (看个人习惯)
和中文 URL 有关 :
6、要输入中文,只需要修改 LC_CTYPE 为 zh_CN.UTF-8 就可以了
本人的 Locale 设置
[root@dhcp ~]# locale |
一、中文显示+英文路径
1、locale=zh_CN.GB2312
2、文件编码 GB2312/GBK/GB18030
3、没有使用 <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">行
4、SecureCRT 编码设置为 <默认>
5、浏览结果
a)IE (总是以 UTF08 发送 URL=是):乱码(自动选择的结果是 UTF-8)。但选择为 “GB2312” 后就可以显示中文
b)IE (总是以 UTF08 发送 URL=否):同上
c)FireFox :同上。默认也是选择 UTF-8 显示。选择 GBK、GB18030、GB2312 都可以正常显示中文
1、locale=zh_CN.GB2312
2、文件编码 GB2312/GBK/GB18030
3、有 <META http-equiv="Content-Type" content="text/html; charset=GB2312"> 行
4、SecureCRT 编码设置为 <默认>
5、浏览结果
a)IE (总是以 UTF08 发送 URL=是):同上
b)IE (总是以 UTF08 发送 URL=否):同上
c)FireFox :同上
1、locale=zh_CN.GB2312
2、文件编码 GB2312/GBK/GB18030
3、有 <META http-equiv="Content-Type" content="text/html; charset=GB18030"> 行
4、SecureCRT 编码设置为 <默认>
5、浏览结果
a)IE (总是以 UTF08 发送 URL=是):同上
b)IE (总是以 UTF08 发送 URL=否):同上
c)FireFox :同上
1、locale=zh_CN.GB2312
2、文件编码 GB2312/GBK/GB18030
3、有 <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 行
4、SecureCRT 编码设置为 <默认>
5、浏览结果
a)IE (总是以 UTF08 发送 URL=是):同上
b)IE (总是以 UTF08 发送 URL=否):同上
c)FireFox :同上
1、locale=zh_CN.UTF-8
2、文件编码 UTF-8
3、没有 <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 行
4、SecureCRT 设置为 UTF-8 编码
5、vi 的 fileencoding 为 utf-8 ,fileencoding=(空)
6、浏览结果
a)IE (总是以 UTF08 发送 URL=是):正常显示,不需要手工选择 GB2312 (如果手工选择 GB2312 反而会显示为乱码)!!!
b)IE (总是以 UTF08 发送 URL=否):同上 !!!
c)FireFox :正常显示 !!!
1、locale=zh_CN.UTF-8
2、文件编码 UTF-8
3、有 <META http-equiv="Content-Type" content="text/html; charset=GB2312"> 行
4、SecureCRT 设置为 UTF-8 编码
5、vi 的 fileencoding 为 utf-8 ,fileencoding=(空)
6、浏览结果
a)IE (总是以 UTF08 发送 URL=是):正常显示。虽然 charset=GB2312 ,但如果选择 GB2312 编码反而会乱码
b)IE (总是以 UTF08 发送 URL=否):同上 !!!
c)FireFox :正常显示 !!!
二、中文显示 + 中文 URL
1、locale=zh_CN.UTF-8
2、文件编码 UTF-8
3、没有 <META> 行
4、SecureCRT 设置为 UTF-8 编码
5、vi 的 fileencoding 为 utf-8 ,fileencoding=(空)
6、浏览结果
A) IE (总是以 UTF-8 发送 URL = 是) :可以看到 URL 是中文的路径
B) IE (总是以 UTF-8 发送 URL = 否) :可以看到 URL 处也显示为中文路径
C)FireFox :都可以正常显示,但 URL 处是 %-encoded 后的 URL ,不是象 IE 那样的中文路径名
D)我们来看一下这个字符串是怎么转成 “命令列表” 这4个字的
E)这种方法就算对于中英文混杂的路径也同样适用