1

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

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

我尝试执行以下操作但没有成功:

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

4

3 回答 3

0

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

<?php
$imagename = $ti[$img_index].'.jpg'; 
$imagename = @iconv("utf-8","ascii//TRANSLIT//IGNORE",$imagename);
$filepathname = $dirpath ."/".$imagename; 
$savefile = fopen($filepathname, 'w');
?>
于 2013-03-29T14:52:39.047 回答
0

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

请记住,图像应该由 URL 引用,因此这需要使用 urlencoding 进行额外的工作。

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

于 2013-03-29T14:54:19.533 回答
0

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

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

如果您提供文件以供下载,您当然必须撤消编码。

于 2013-03-29T14:54:25.657 回答