如何在php中保存文件,在希腊语中输出文件名

时间:2013-03-29 14:44:25

标签: php

在PHP中我想将文件输出到目录,但文件名包含希腊字符,因此输出是乱码。

$imagename = $ti[$img_index].'.jpg';
$filepathname = $dirpath ."/".$imagename;
$savefile = fopen($filepathname, 'w');

我尝试过以下但没有成功:

$filepathname = mb_convert_encoding($filepathname, 'utf8', 'iso-8859-1');

3 个答案:

答案 0 :(得分:0)

您需要将文件名转换为ascii字符集或OS支持的其他字符

<?php
$imagename = $ti[$img_index].'.jpg'; 
$imagename = @iconv("utf-8","ascii//TRANSLIT//IGNORE",$imagename);
$filepathname = $dirpath ."/".$imagename; 
$savefile = fopen($filepathname, 'w');
?>

答案 1 :(得分:0)

您不应该依赖文件名中的特殊字符。您应该更改您的应用程序逻辑(随机构建图像名称或基于其他数据构建图像名称,将字符转换为ascii - 例如西里尔字母对每个chacater od字符对具有相应的ASCII字符,也许这种情况在希腊语等中类似)。我在网址中看不到特殊字符的任何利润。

请记住,图片应该通过网址引用,因此需要使用urlencoding进行额外的处理。

考虑任何迁移(服务器,操作系统,配置等)的可能问题。

答案 2 :(得分:0)

操作系统存在非ascii字符问题,编码无关紧要。

您可以将文件名编码为仅包含安全范围内的字符。我使用的编码方案是Quoted-printable。它可以支持任何编码的字符(甚至是UTF-16和UTF-32),因为它是二进制编码。

如果您提供要下载的文件,则必须撤消编码。