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
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をインストールし ...

no image
PHP:htmlspecialchars関数を簡単に使いやすくする

文字列中の文字でHTMLエンティティに変換が必要な文字があった場合に エンティテ ...

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

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

no image
PHP:今週月曜00:00:00のタイムスタンプを取得したい

※2011/4/23 追記 コメントにて一行で解決する方法を教えて頂きました。 ...

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

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

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

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

no image
Qdmailを使ってiphoneにデコメール(デコメ、HTMLメール)を送るとテキストメールで届いてしまう不具合への対応方法

全キャリアへデコメールの作成が行えることで有名なQdmail。 http://h ...

xamppでApacheを起動するとThis may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to view error logs and check the Windows Event Viewer for more clues If you need more help, copy and post this entire log window on the forumsとエラーが表示される時の対処法

windows7にxamppをインストール後、コントロールパネルからApache ...

PHPで Fatal error: Call to undefined function mcrypt_module_open() in /path/to/file on line *** とエラーが表示される場合の対処方法

centos6、php5.3の環境でmcrypt_module_open()を使 ...

no image
phpmyadminにアクセスするとPHP Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /PATH TO PHPMYADMIN/libraries/Error_Handler.class.php on line 25 とエラーになる

久しぶりにサーバネタ。 phpmyadminをインストールしようと http:/ ...