2

我在 CentOS 服务器上安装了 PHP,我想将文件从该服务器(使用 PHP FTP)传输到运行 IIS 的 Windows FTP 服务器。现在我的问题是,当文件名包含非拉丁字符时,它会将文件名更改为“تست.3gp”(它在 CentOS 中的名称是 تست.3gp)我已经搜索了很多次但没有解决方案。我怎样才能解决这个问题?

我认为 Windows 使用 CP-1252 (Windows-1252) 作为字符集,而 CentOS 使用 UTF-8 作为字符集。但是用它转换它iconv()mb_convert_encoding()没有用。

4

2 回答 2

0

经过多次研究,我找到了答案。windows 对不同的语言使用不同的字符集。对于这些字符集的编码,我们可以使用这个类:http ://www.phpclasses.org/package/1360-PHP-Conversion-between-many-character-set-encodings.html

于 2013-03-03T11:18:36.597 回答
0

我们也可以在以下代码中使用这些编码mb_convert_encoding()

// Cyrillic script such as Russian, Bulgarian, Serbian Cyrillic and other languages Windows-1251 ~= ISO-8859-5 

// Latin alphabet Windows-1252 ~= ISO-8859-1 // sometimes called incorrectly "ANSI"

//modern Greek. It is not capable of supporting the older polytonic Greek. It is not fully compatible with ISO 8859-7 because the letters like Ά are located at different byte values Windows-1253 ~= ISO-8859-7

// Turkish Windows-1254 = ISO-8859-9

// Hebrew Windows-1255 = ISO-8859-8

// Arabic script like Persian and Urdu Windows-1256 ~= ISO-8859-6

// Estonian, Latvian and Lithuanian languages Windows-1257 != ISO-8859-4

// Vietnamese texts. It is very similar to Windows-1252 with the differences being that s-caron and z-caron Windows-1258 ~= Windows-1252

我将这些代码用于波斯文件名:

$filename=iconv('UTF-8','Windows-1256//IGNORE',$filename);
于 2013-03-03T12:13:18.667 回答