1

私の Linux サーバーには既に多くの zip が保存されており、それらを管理するアプリは含まれているファイルを抽出する必要があります。

ただし、zip のアップローダは、ファイル名にアクセント付きの文字を入れることがあるため、php がファイル名を抽出するときに、特に zip が Windows で作成されたときに、エンコーディングが乱れた名前を取得する可能性があります。

zip からファイル名を抽出するコードは次のとおりです。

$zip = zip_open ( $zipFile ) ;

while ($zip_entry = zip_read($zip))
$ArrayInternalFileNames[] = zip_entry_name ( $zip_entry );

「混乱したエンコーディング」文字を​​持たないようにするには、$ArrayInternalFileNames コンテンツで何をすべきですか? 問題は、エンコーディングが混乱しているため、php 文字列関数がこれらのファイル名でうまく機能しないことです。

4

4 に答える 4

1

ソース名が UTF-8 であることを確認してください。それで:

$file_name=iconv("UTF-8", "IBM850", $file_name);

IBM850zip 内のファイル名はエンコードする必要があります。

于 2016-05-19T13:22:11.487 に答える
1

次のコマンドを使用して、ファイル名を ASCII に音訳してみることができますiconv()

$filename = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
于 2013-01-30T22:18:20.250 に答える
0

あなたは試すことができます:

mb_convert_encoding($zip_entry, 'UTF-8');

これにより、不要な文字が削除されます。それ以外の場合は、strtr()を見てください。これにより、ある文字セットを別の文字セットに変換できます。

于 2013-01-30T21:56:57.397 に答える