1. ホーム
  2. php

[解決済み] ファイルの先頭からï "¿を削除するにはどうすればよいですか?

2022-04-24 09:36:10

質問内容

で開くと正常に見えるCSSファイルがあります。 ゲディット しかし、PHP で読み込むと (すべての CSS ファイルをひとつにまとめるため)、この CSS には以下の文字が付加されます。ï "¿

PHPは空白をすべて削除するので、コードの途中にランダムなï "¿があると、全体がめちゃくちゃになります。先ほども言ったように、geditでファイルを開いたときにこれらの文字を実際に見ることができないので、簡単に削除することができません。

この問題をググってみると、明らかにファイルのエンコーディングに問題があるようです。これは、ファイルをftpでLinux/Windowsの異なるサーバーに移動させたり rsync 様々なテキストエディタを使用しています。文字コードについてはあまり詳しくないので、助けていただけると助かります。

このファイルはUTF-8形式で保存されていますが、geditはISO-8859-15形式での保存を許可しません(ドキュメントには指定された文字エンコーディングでエンコードできない文字が1つ以上含まれています)。WindowsとLinuxの改行コードで保存してみましたが、どちらもうまくいきませんでした。

解決方法は?

3つの言葉を贈ります。

バイトオーダーマーク(BOM)

これはISO-8859-1のUTF-8 BOMに対する表現です。 BOMを使わないようにエディタに指示するか、別のエディタを使ってBOMを除去する必要があります。

BOMの削除を自動化するには、次のようにします。 awk にあるように この質問 .

として 別の答えによると を使用すると、PHP が BOM を正しく解釈できるようになります。 mb_internal_encoding() を、このように。

 <?php
   //Storing the previous encoding in case you have some other piece 
   //of code sensitive to encoding and counting on the default value.      
   $previous_encoding = mb_internal_encoding();

   //Set the encoding to UTF-8, so when reading files it ignores the BOM       
   mb_internal_encoding('UTF-8');

   //Process the CSS files...

   //Finally, return to the previous encoding
   mb_internal_encoding($previous_encoding);

   //Rest of the code...
  ?>