KAKIMASSE

ネットで見つけた面白い記事や、役立つのではと感じたネタなどを書いています。

.htmlファイルでPHPを動かす方法(UTF-8の文字化け対策方法もあり)

   

.htmlファイルでPHPを動かす方法(UTF-8の文字化け対策方法もあり)photo credit: DaveBleasdale via photopin cc

.htaccessというファイルを使って.htmlの拡張子のファイルでPHPスクリプトを動作させる方法です。
ぐぐると沢山方法が出てきますが、僕の環境ではUTF-8で作成したページがどうしても文字化けしてしまったのでその対策方法も紹介したいと思います。

1..htmlファイルでPHPを動作させる方法

以下の1行を記載した.htaccessファイルをサーバへアップロードする。

AddType application/x-httpd-php .html

これで.htmlファイルに書いたPHPスクリプトが動作すると思います。

ここからが本番。

僕の環境ではhtmlファイルをUTF-8で書いて、ファイルの文字コードもUTF-8で保存しているのに下の画像のように文字化けを起こしてしまいました。

■Before
UTF-8のページが文字化け

ブラウザのエンコードを確認すると自動検出で日本語(Shift-JIS)となっています。
ちゃんとhtmlファイル中には

<meta charset="UTF-8" />

とか、

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

って書いてUTF-8で保存しているのに、です。

この文字化けへの対策方法を、2つ紹介したいと思います。(他にもあるかも知れません。)

A案:1.の.htaccessファイルに次の1行を追記する。

php_value default_charset "UTF-8"

※default_charsetとは

出力時にHTTPヘッダとして送信する文字コード名

これ一発で文字化けが直ります。スバラシイ!

■After
文字化けスッキリ☆

もしも個別ファイルで対処したい場合は次のB案を試してみて下さい。

B案:htmlページ中に次の1行を追記する。

<?php header("Content-Type: text/html;charset=UTF-8");?>

PHPのheader関数を使っているのでページの出力が始まる前に書いていないと以下のようなPHPのエラーになります。

Warning: Cannot modify header information - headers already sent by (output started at /hogehoge/)・・・・

<html>などの出力より前に記載してみて下さい。

この方法の場合はHTMLファイルの数だけ対処が必要なので非常に面倒ですが、一応。
※ちなみに僕は割と長いことB案を使っていました (*/∇\*)

htmlでPHPを実行していて、UTF-8の文字化けで悩んでいる方、一度お試しあれ。

 - apache, PHP , , ,

SPONSORD LINKS

スポンサーリンク

スポンサーリンク

Message

メールアドレスが公開されることはありません。

  関連記事

no image
Apache:バーチャルホストで複数のServerAliasを使いたい

複数のサブドメインで、同じファイルにアクセスさせたい場合 (例:www.exam ...

no image
PHP:glob関数で複数パターンのマッチングを行ないたい

何かと便利なPHPのglob関数。 よく <?php $files = g ...

no image
PHP:PHPで文字コードUFT-8を出力するページでブラウザのエンコードがシフトJISになってしまう時の対応方法

ファイルはUTF-8で書かれてて、 htmlソースののmetaタグも <m ...

no image
PHP:au携帯のデバイスIDと機種名称(モデル名)のリストを配列で作ってみました

ケータイサイトネタです。 PHPでPEARのライブラリNet_UserAgent ...

no image
PHP:配列の文字コードをmb_convert_encodingを使わずに変換するには?

PHPで配列に格納されている値に対して mb_convert_encodingで ...

no image
WordPress:特定の記事(エントリ)でPHPを実行したい

このブログでそんな事がしたくなって、調べてみました。 エントリ中でPHPコードを ...

no image
.htaccess:特定のディレクトリで設定したBASIC認証を解除(無効に)したい

手軽で非常に便利な .htaccess 簡単にサイトにパスワード制限をかけられて ...

no image
PHP:年(Y)と週番号(W)からタイムスタンプを取得する方法

例えば今日が何年の第何週目かを知るには下の関数で取得出来ますが、 <?ph ...

no image
PHP:文字列の比較で == は絶対に使っちゃだめ。

マジですか? しかもかなり前のエントリー(汗)。 PHPでご飯食べてる先輩もフツ ...

no image
imagickのインストールでFatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 92160 bytes) in /usr/share/pear/PEAR/PackageFile/v2/Validator.php on line 912となる場合の対処方法

Centos5.5(64bit)のサーバにImageMagickをインストールし ...