ファイルのエンコード検出に関しては、Baidu にたくさんありますが、実際には便利なものはありません。
多くの人が mb_detect_encoding 検出を提案しています。しかし、何らかの理由で成功せず、何も出力されませんでした。
誰かが BOM によって判断された拡張バージョンを作成したのを見たので、これは完全に信頼できません
マニュアルの mb_detect_encoding 関数の下の例では、検出関数を自分で作成しました。
エンコーディングを自動的に検出し、指定されたエンコーディングに従ってファイルを読み取る関数も含まれています。
ソース コードは次のとおりです。気に入らない場合はコメントしないでください。
オンラインの方法を試した後にこれを書きましたが、環境の違いが原因かもしれません。
だから、うまくいかなくても私を批判しないでください。私はただ私の考えを共有しているだけです、、
<span class="hljs-preprocessor"><?php <span class="hljs-comment">/** * 检测文件编码 *<span class="hljs-phpdoc"> @param string $file 文件路径 *<span class="hljs-phpdoc"> @return string|null 返回 编码名 或 null */ <span class="hljs-function"><span class="hljs-keyword">function <span class="hljs-title">detect_encoding<span class="hljs-params">(<span class="hljs-variable">$file) { <span class="hljs-variable">$list = <span class="hljs-keyword">array(<span class="hljs-string">'GBK', <span class="hljs-string">'UTF-8', <span class="hljs-string">'UTF-16LE', <span class="hljs-string">'UTF-16BE', <span class="hljs-string">'ISO-8859-1'); <span class="hljs-variable">$str = file_get_contents(<span class="hljs-variable">$file); <span class="hljs-keyword">foreach (<span class="hljs-variable">$list <span class="hljs-keyword">as <span class="hljs-variable">$item) { <span class="hljs-variable">$tmp = mb_convert_encoding(<span class="hljs-variable">$str, <span class="hljs-variable">$item, <span class="hljs-variable">$item); <span class="hljs-keyword">if (md5(<span class="hljs-variable">$tmp) == md5(<span class="hljs-variable">$str)) { <span class="hljs-keyword">return <span class="hljs-variable">$item; } } <span class="hljs-keyword">return <span class="hljs-keyword">null; } <span class="hljs-comment">/** * 自动解析编码读入文件 *<span class="hljs-phpdoc"> @param string $file 文件路径 *<span class="hljs-phpdoc"> @param string $charset 读取编码 *<span class="hljs-phpdoc"> @return string 返回读取内容 */ <span class="hljs-function"><span class="hljs-keyword">function <span class="hljs-title">auto_read<span class="hljs-params">(<span class="hljs-variable">$file, <span class="hljs-variable">$charset=<span class="hljs-string">'UTF-8') { <span class="hljs-variable">$list = <span class="hljs-keyword">array(<span class="hljs-string">'GBK', <span class="hljs-string">'UTF-8', <span class="hljs-string">'UTF-16LE', <span class="hljs-string">'UTF-16BE', <span class="hljs-string">'ISO-8859-1'); <span class="hljs-variable">$str = file_get_contents(<span class="hljs-variable">$file); <span class="hljs-keyword">foreach (<span class="hljs-variable">$list <span class="hljs-keyword">as <span class="hljs-variable">$item) { <span class="hljs-variable">$tmp = mb_convert_encoding(<span class="hljs-variable">$str, <span class="hljs-variable">$item, <span class="hljs-variable">$item); <span class="hljs-keyword">if (md5(<span class="hljs-variable">$tmp) == md5(<span class="hljs-variable">$str)) { <span class="hljs-keyword">return mb_convert_encoding(<span class="hljs-variable">$str, <span class="hljs-variable">$charset, <span class="hljs-variable">$item); } } <span class="hljs-keyword">return <span class="hljs-string">""; }</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>