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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

no image
PHP:半角スペース、全角スペース、タブなどの空白文字を半角スペースに置換したい。(連続していてもOK)

PHPで文字列を加工するときにexplode関数などで区切りたい時 文字列が色々 ...