我正在运行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.
答案 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', // Æ to Ae
chr(195).chr(166) => 'ae', // æ to ae
chr(195).chr(152) => 'OE', // Ø to OE
chr(195).chr(184) => 'oe', // ø to oe
chr(195).chr(133) => 'AA', // Å to AA
chr(195).chr(165) => 'aa' // å to aa
);
$translated = strtr($filename,$filter_chars); // Translate characters
return $translated;
}