[原创] 如何让 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)这种方法就算对于中英文混杂的路径也同样适用
  
  
  
  
  










