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文字セットまたはOSでサポートされている別の文字セットに変換する必要があります

<?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 に変換します。たとえば、キリル文字には各文字と文字のペアに対応する ASCII 文字があります。この状況はギリシャ語などでも同様です)。URL の特殊文字に利益が見られません。

画像は URL で参照する必要があることに注意してください。したがって、これには urlencoding の追加作業が必要です。

移行で発生する可能性のある問題 (サーバー、OS、構成など) について考えてください。

于 2013-03-29T14:54:19.533 に答える
0

オペレーティング システムには、ASCII 以外の文字に関する問題があります。エンコーディングは問題ではありません。

ファイル名をエンコードして、安全な範囲の文字のみを含めることができます。私が使用するエンコード方式はQuoted-printableです。バイナリ エンコーディングであるため、任意のエンコーディング (UTF-16 や UTF-32 も含む) の文字をサポートできます。

ダウンロード用のファイルを提供する場合は、もちろんエンコードを元に戻す必要があります。

于 2013-03-29T14:54:25.657 に答える