1

ファイル名の配列を取得するためにphp関数を使用dirscanしました。次のような配列を返します。

[8] => ?????? ?????.js
[9] => ???????? ?????  ??? ?????.js
[10] => ???????? ???????????? ????????.js
[11] => ?????????? ???.js
[12] => A Contra Corriente.js
[13] => ABC-CLIO Serials Web.js
[14] => ACL.js

最初の 3 つは、名前がキリル文字のファイルです。正しいファイル名を取得するにはどうすればよいですか?

4

1 に答える 1

4

私はwin7 ntfsを使用しています

申し訳ありませんが、Windows で実行されている PHP は、一般的な Unicode 文字を含むファイル名をサポートできません。現在のコード ページ内にある文字だけで構成されたファイル名のみを処理できます。

そのコード ページはおそらく 1252 (西ヨーロッパ、ISO-8859-1 に似ています) で、キリル文字は含まれていません。ロシア語のインストールで実行すると、コード ページは 1251 になり、キリル文字は機能しますが、アクセント付きのラテン文字は壊れます。

これは、PHP、Java などを含む、MS C ランタイムからの標準 C stdio ライブラリ呼び出しを使用するすべてのアプリケーションに影響する問題です。(Python などの一部の言語では、C stdlib の代わりに Windows 固有の API を使用して Unicode ファイル名を特別にサポートしています。PHP に同じものを取得するためのリクエスト 45517がありますが、息を止めないでください。)

Windows 以外のプラットフォームでは、Unicode は UTF-8 エンコーディングのバイト文字列を使用してサポートされる傾向があるため、すべての Unicode 文字が機能します。残念ながら、Windows にはこの機能がありません (コード ページ 65001 は一種の UTF-8 ですが、ひどく壊れています)。

于 2012-06-20T16:44:48.550 に答える