2017年10月4日星期三
FTP中文乱码问题
基本解释:
服务器端字符集和客户端字符集不匹配。
服务器端一般采用Linux系统,而Linux系统默认采用通行全球的UTF8字符集
客户端将服务器端提供的UTF8字符集当作GBK解释自然就出现乱码了。
| FTP服务器端 | UTF-8 | UTF-8 | GB18030 | GB18030 |
| FTP客户端 | UTF-8 | GB-18030 | UTF-8 | GB18030 |
| 乱码 | 否 | 是 | 是 | 否 |
上表是一般规律。理论上,如果客户端能够自动识别服务器端代码页而且正确无误的化,自然不会出现乱码的现象。
下表是测试情况,
测试环境:
NAS:Dlink DNS-323,Thecus N5550
FTP Client:Filezilla
| NAS FTP编码(Dlink:Client Language) | Unicode/UTF-8 | Unicode/UTF-8 | Simplified Chinese | Simplified Chinese |
| 上传FTP字符集 | UTF-8 | GB18030 | UTF-8 | GB18030 |
| Mac Smaba打开 | 正常 | 乱码 | 乱码 | 正常 |
| Ubuntu Samba打开 | 正常 | 乱码 | 乱码 | 正常 |
| FTP UTF-8查看 | 正常 | 看不到 | 看不到 | 看不到 |
| FTP GB18030查看 | 正常 | 正常 | 看不到 | 正常 |
走标准化路线,全部统一到Unicode/UTF-8,省很多事。
Dlink DNS-323上的中文乱码文件,乱码情况或说怎么乱和FTP服务器编码没关系,只和Client端(FTP或Samba)语言编码有关系。
Unicode与UTF-8
讲历史
中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。
汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。
中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。
每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。
终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。从unicode开始,无论是半角的英文字母,还是全角的汉字,它们都是统一的”一个字符“!同时,也都是统一的”两个字节“。由于”半角”英文符号只需要用到低8位,所以其高8位永远是0。(Unicode 是一种字符集。Unicode 的学名是 "Universal Multiple-Octet Coded Character Set",简称为UCS。UCS 可以看作是 "Unicode Character Set" 的缩写。这一标准的 2 字节形式通常称作 UCS-2。然而,受制于 2 字节数量的限制,UCS-2 只能表示最多 65536 个字符。Unicode 的 4 字节形式被称为 UCS-4 或 UTF-32,能够定义 Unicode 的全部扩展,最多可定义 100 万个以上唯一字符,目前该字符集尚未填充完全。)
UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16(解决unicode如何在网络上传输,UTF=UCS Transfer Format),分别每次传输 8个位和 16个位。UTF-8就是在互联网上使用最广的一种unicode的实现方式,这是为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。
ucs-2对应utf-16,ucs-4对应UTF-32.UTF-8是没有对应的UCS
订阅 博文 [Atom]