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
PHP:glob関数で複数パターンのマッチングを行ないたい

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

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

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

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:/ ...

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

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

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 ...

no image
PHP:セッションを使っていて「Web ページの有効期限が切れています」となる時の対策方法

HTTPセッション管理を行うページを作って、フォームで送信した後に ブラウザ(I ...

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

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

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

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

no image
PHP:phpでgzip (.gz) ファイルを作成するには?

PHPマニュアルにありました。 http://php.net/manual/ja ...

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

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