PHP は Web 開発でよく使われるスクリプト言語で、その強力な機能と柔軟な機能が多くの人に愛用されています。 PHP では、shellexec 関数を使用すると、プログラムでシステム コマンドを実行し、結果を返すことができます。しかし、漢字を使用してコマンドを実行すると、しばしば文字化けの問題に遭遇します。
中国語の文字化けは、PHP では ASCII エンコードが使用されているのに対し、システム コマンドの中国語では GBK エンコードが使用されており、2 つのエンコードに互換性がないことが原因です。コマンドの実行中に、システムは GBK エンコードされた中国語を ASCII エンコードに変換するため、文字化けが発生します。
この問題を解決するには、iconv 関数を使用して、中国語を UTF-8 などのシステム エンコーディングと一致する文字セットに変換する必要があります。
次は、解決策のコード例です:
$cmd = 'dir /B | findstr 中文'; // 一个带中文字符的命令 $cmd = iconv('UTF-8', 'GBK', $cmd); // 将命令中的中文转换成GBK编码 $result = shell_exec($cmd); // 执行命令 $result = iconv('GBK', 'UTF-8', $result); // 将命令的输出结果转换成UTF-8编码 echo $result; // 输出结果
上記のコードでは、まずコマンド内の中国語の文字を GBK エンコードに変換し、コマンドの出力を UTF に変換します。 -8 中国語の文字化けを避けるためのエンコーディング。
コマンドのセキュリティを確保するには、コマンド インジェクションやその他のセキュリティ問題を回避するために、コマンド内の特殊文字をフィルタリングしてエスケープする必要があることに注意してください。
つまり、PHP のshellexec 関数はシステム コマンドの実行に役立ちますが、漢字を処理する場合はエンコード変換の問題に注意する必要があります。 iconv 関数を使用すると、中国語の文字をシステム エンコーディングと一致する文字セットに変換し、中国語の文字化けの発生を回避できます。
以上がphpshellexecの中国語文字化けの解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。