在使用公司的ftp服务器的时候,上传文件夹出现问题,但并不总能重现,问题包错误如下:
451 No mapping for the unicode character exists in the target multi-byte code page
出现这个问题的原因是,文件夹里面既有英文文件,又有中文名文件,导致windows识别出错.
解决办法:
在crontina那里输入IIS,打开IIS服务器,然后找到FTP服务,可以看到配置编辑器,点击右键,选择高级配置,把允许utf8改成false,保存,然后重启ftp服务即可.
出现这个问题的深层原因是:
中国这边windows系统使用的是中文简体编码.
在cmd里面输入以下命令,即可查看系统默认编码集:
C:\Users\Administrator>chcp
活动代码页: 936
下表列出了所有支持的代码页及其国家(地区)或者语言:
代码页 | 国家(地区)或语言 |
437 | 美国 |
708 | 阿拉伯文(ASMO 708) |
720 | 阿拉伯文(DOS) |
850 | 多语言(拉丁文 I) |
852 | 中欧(DOS) - 斯拉夫语(拉丁文 II) |
855 | 西里尔文(俄语) |
857 | 土耳其语 |
860 | 葡萄牙语 |
861 | 冰岛语 |
862 | 希伯来文(DOS) |
863 | 加拿大 - 法语 |
865 | 日耳曼语 |
866 | 俄语 - 西里尔文(DOS) |
869 | 现代希腊语 |
874 | 泰文(Windows) |
932 | 日文(Shift-JIS) |
936 | 中国 - 简体中文(GB2312) |
949 | 韩文 |
950 | 繁体中文(Big5) |
1200 | Unicode |
1201 | Unicode (Big-Endian) |
1250 | 中欧(Windows) |
1251 | 西里尔文(Windows) |
1252 | 西欧(Windows) |
1253 | 希腊文(Windows) |
1254 | 土耳其文(Windows) |
1255 | 希伯来文(Windows) |
1256 | 阿拉伯文(Windows) |
1257 | 波罗的海文(Windows) |
1258 | 越南文(Windows) |
20866 | 西里尔文(KOI8-R) |
21866 | 西里尔文(KOI8-U) |
28592 | 中欧(ISO) |
28593 | 拉丁文 3 (ISO) |
28594 | 波罗的海文(ISO) |
28595 | 西里尔文(ISO) |
28596 | 阿拉伯文(ISO) |
28597 | 希腊文(ISO) |
28598 | 希伯来文(ISO-Visual) |
38598 | 希伯来文(ISO-Logical) |
50000 | 用户定义的 |
50001 | 自动选择 |
50220 | 日文(JIS) |
50221 | 日文(JIS-允许一个字节的片假名) |
50222 | 日文(JIS-允许一个字节的片假名 - SO/SI) |
50225 | 韩文(ISO) |
50932 | 日文(自动选择) |
50949 | 韩文(自动选择) |
51932 | 日文(EUC) |
51949 | 韩文(EUC) |
52936 | 简体中文(HZ) |
65000 | Unicode (UTF-7) |
65001 | Unicode (UTF-8) |
然后ftp那边设置的是utf8=true,那就只能输入utf8格式的文件了,所以要把这个编码检测设置为否,允许任何编码的文件上传.