部屋の利用状況や機械の稼働状況を把握するために、PHPでCSVにデータを書き込み、必要な情報をDAT(データ)ファイルに保存、DATファイルに表示した情報をサイトに表示することがあります。
このコードを作った際に環境によって文字コードが異なってしまい、サイト上で文字化けして表示されてしまうことがあります。もしDATファイルを生成するのが最初の1回のみであれば、テキストエディタで開き、文字コードを変えて上書きすれば簡単に直すことができますが、CSVファイルを数時間置きに自動生成し、リアルタイムで状況を把握できるようなシステムを作る場合は、phpコードを修正する必要があります。そのような場合は、下記で紹介する方法で改善できると思いますので、参考にしてみてください。
DATファイルの文字化けを回避するためのコード
DATファイルの文字化けを回避するには下記コードをphpに記述します。
$DatFilePath = "room_status.dat"; //最初に生成されるdatファイル(文字化けする)
$outputPath = 'output_roomst.dat'; //文字化けを解消したdatファイル
$fileContent = file_get_contents($DatFilePath);
$utf8Content = mb_convert_encoding($fileContent, 'UTF-8', 'Shift_JIS');
//文字化けしたdatファイルを指定の文字コードに書き換え
file_put_contents($outputPath, $utf8Content);
//------------ 以下、処理の記述 ---------------
上記のようなコードを1行目にあるdatファイルの読み込みの記述下辺りに記載します。
※1行目の記述が既にphpに記載されている場合は、上記記述の1行目は無視してください。
1行目より下の記述を一つずつ説明します。
- 3行目「$outputPath…」:文字化け解消後の再生成されるdatファイルのパス指定※ファイル名は適宜変更してください。
- 4行目「$fileContent」:1行目のdatファイルの内容を取得
- 5行目「$utf8Content…」:「mb_convert_encoding(変換するファイル・文字列,エンコード後の文字コード,エンコード対象の文字コード)」
- 7行目「file_put_contents…」:5行目のエンコード内容を新しいdatファイルに反映させる
上記の記述を追加することで、エンコードされたdatファイルが新たに1つサーバーの指定階層に生成されます。
また、5行目の
mb_convert_encoding(変換するファイル・文字列,エンコード後の文字コード,エンコード対象の文字コード);
エンコード前後の文字コードはご自身の環境に合わせて正しいものを設定してください。