在PHP中我想将文件输出到目录,但文件名包含希腊字符,因此输出是乱码。
$imagename = $ti[$img_index].'.jpg';
$filepathname = $dirpath ."/".$imagename;
$savefile = fopen($filepathname, 'w');
我尝试过以下但没有成功:
$filepathname = mb_convert_encoding($filepathname, 'utf8', 'iso-8859-1');
答案 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),因为它是二进制编码。
如果您提供要下载的文件,则必须撤消编码。