PHP で UTF-8 ファイル名を持つディレクトリを安全に作成するにはどうすればよいですか?
Dec 06, 2024 am 09:06 AMUTF-8 文字列を使用した PHP ファイルシステム関数の利用
PHP では、ファイルシステム関数を操作するときに UTF-8 文字列を処理すると、課題が生じる可能性があります。次のシナリオを考えてみましょう:
1 2 |
|
この例では、「Depósito」という名前のフォルダーを作成しようとします。ただし、Windows エクスプローラーで表示すると、フォルダー名が「Depósito」と表示され、UTF-8 以外の文字が歪んで表示されます。
解決策: UTF-8 文字列の Urlencoding
この問題を解決するには、文字列をファイルシステム関数で使用する前に URL コード化することをお勧めします。 Urlencoding により、すべての文字が有効な形式に変換されます。
1 2 |
|
文字列を urlencoding することにより、非 UTF-8 文字がエンコードされた対応する文字に変換され、正しい名前でフォルダーを作成できるようになります。 .
考慮事項
urlencoding は効果的ですが、
- エンコードされたファイル名は 255 文字を超えてはなりません。
- 1 つの文字に対して複数の UTF-8 表現が存在する場合 (文字の結合など)、正規化一貫性のために必要な場合があります。
- 標準関数を使用したアルファベット順の並べ替えには、ファイル名をデコードし、UTF-8 対応を使用する必要があります。
代替ソリューション (あまり望ましくない)
その他のあまり望ましくない解決策は次のとおりです。
- ISO- 8859-1 互換性: ファイル名文字を表現できるものに制限するISO-8859-1 に記載されています。ファイルシステム関数で使用する前に utf8_decode() を使用して UTF-8 文字列を変換し、 utf8_encode() を使用して scandir によって返されたファイル エントリを変換します。
注意事項:
- 非 ASCII バイトがファイル内に存在する場合、このメソッドは失敗する可能性があります。 filename.
- Windows はロケールごとに異なるエンコーディングを使用する場合があり、より複雑な変換関数の使用が必要になります。
音訳:
In UTF-8 との互換性が不可欠な場合は、文字変換を使用して非 ASCII 文字をターゲットと互換性のある同等の ASCII 文字に変換することを検討してください。ファイルシステム。
以上がPHP で UTF-8 ファイル名を持つディレクトリを安全に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











LaravelのバックエンドでReactアプリを構築する:パート2、React
