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

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:au携帯のデバイスIDと機種名称(モデル名)のリストを配列で作ってみました

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

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

no image
PHP:MYSQLデータベースに携帯の絵文字をINSERTすると???と文字化けする対応

更新しなさ過ぎでこのままじゃ確実に KAKIMASSEN になっちゃうよねーww ...

PHPで Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /path/to/file on line *** のエラーの対応方法

centos6、PHP5.3のサーバで Warning: strtotime() ...

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

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

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

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

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

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