服务器问题æøå

时间:2012-11-02 09:00:46

标签: php html special-characters

我正在运行UNIX服务器。我有一个程序,可以将图像上传到我的服务器。

但是我对这些字符有一些问题: ø æ å

在我的程序中,我使用了

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

示例

我上传了一张名为påske.png

的图片

在我的服务器上,我可以看到图片名为påske.png

在我的数据库中,名称påske.png也会保存。

如果我然后手动尝试查看我的图片,我会收到错误

我输入:www.myserver.com/uploads/påske.png

Error: /uploads/påske.png was not found on this server.

3 个答案:

答案 0 :(得分:5)

你不要直接将特殊字符保存为文件名。给他们一个新名称,如时间戳,或用等效的英语替换空格。

您所拥有的是正常的,然后您的服务器/ Web服务器具有默认字符集,例如 UTF-8 。 Linux中的特殊字符显示在此字符集中。

修改:

Replace special characters before the file is uploaded using PHP

答案 1 :(得分:2)

或者,您可以使用此class并在上传期间更改文件名

* normal - converts each special character (áéíÁÈÒÖ) to their 
normal character (aeiAEOO)

string $class->normal(string string);

Example: 
print $strings->normal("faço áeéíàÒ");
# will output: faco aeeiaO

答案 2 :(得分:1)

试试这个。

function de_danishify_filename_on_upload($filename) {
if("do a check") return $filename; // Checks to see if a string is utf8 encoded

$filter_chars = array(
    // Character mapping from UTF-8 characters to ASCII characters. 
    chr(195).chr(134) => 'AE',  // &AElig; to Ae
    chr(195).chr(166) => 'ae',  // &aelig; to ae
    chr(195).chr(152) => 'OE',  // &Oslash; to OE
    chr(195).chr(184) => 'oe',  // &oslash; to oe
    chr(195).chr(133) => 'AA',  // &Aring; to AA
    chr(195).chr(165) => 'aa'   // &aring; to aa
);
$translated = strtr($filename,$filter_chars); // Translate characters

return $translated;
}