服务器上的文件名Ã而不是ü

时间:2014-09-14 13:12:20

标签: unicode filenames

我的文件名有一个奇怪的问题。但我不确定它是否是来自服务器的问题:

我在网站上的链接如下:

  

http://new.anwaltskanzlei-hauser.ch/rechtsberatung_zürich.php?lang=ge

或者,如果我复制并粘贴到这里:

  

http://new.anwaltskanzlei-hauser.ch/rechtsberatung_z%C3%BCrich.php?lang=ge

服务器上的文件名是:rechtsberatung_zürich.php。

所以,我不知道,我究竟需要改变什么,我有一个名为rechtsberatung_zürich.php的文件名

我知道这是charset的一个问题,依此类推。有什么帮助吗?

5 个答案:

答案 0 :(得分:5)

由于页面从外面看起来很好,我认为你不需要在服务器上更改任何内容。

  

服务器上的文件名是:rechtsberatung_zürich.php。

听起来您使用的文件传输工具将服务器的文件系统视为windows-1252编码,实际上服务器将其视为UTF-8。

您如何更改文件传输工具为远程文件系统所采用的编码,具体取决于工具的内容。例如,使用WinSCP,有UTF-8 Encoding for Filenames选项。

(如果您使用内置于资源管理器的FTP支持,那么您无能为力,它总是使用您本地计算机的默认语言环境编码,不幸的是,它永远不会是UTF-8。但您不希望在本世纪使用FTP,你应该尝试在任何情况下转移到SFTP。)

答案 1 :(得分:0)

你可以格式化字符集,如果它在数据库中作为比较' utf8_general_ci'语言选项

答案 2 :(得分:0)

我只是进行站点范围的Unicode清理,读取目录,glob目录,读取文件路径,文件名和文件,然后将所有内容转换为使用单个字符集(最好是utf-8或utf-32),然后使用用于所有内容,服务器,数据库,脚本等的字符集。

答案 3 :(得分:0)

我只是进行站点范围的Unicode清理,读取目录,glob目录,读取文件路径,文件名和文件,然后将所有内容转换为使用单个字符集(最好是utf-8或utf-32),然后使用该字符集可用于所有内容,服务器,数据库,脚本等,并且您可以使用PHP mb_函数集来完成所有操作。

<?php

function fixEncoding ( $string, $e_f, $e_t )
{
    return mb_convert_encoding ( $string, $e_f, $e_t );
}

$string = "Italienische Gemüsesuppe";

$encode_from = "windows-1252";

$encode_to = "UTF-8";

echo fixEncoding ( $string, $encode_from, $encode_to ) . "\r\n";

?>

答案 4 :(得分:-3)

它是UTF-8字符集的问题,它不支持某些字符。可能你应该使用ISO-8859-1 charset编码代替UTF-8。