PHPをUTF-8へなめらかに移行する

今はやりの Ajax を実行するためには、UTF-8 でコンテンツを書いた方が良い。
事実、protorype.js は、EUC-JP では動かなかった。

しかし、データベースの文字コードなどが他の文字コードの場合、運用を停止して全てのデータをコンバートする訳にもいかない。

こんな時便利なのが output_handler だ。

/etc/php.ini を、以下のように設定すると、内部文字コードはそのままで出力する文字コードを変更できる。

output_handler = mb_output_handler

mbstring.http_output = UTF-8 

レンタルサーバなどで、設定ファイルを変更できない場合は、PHPで設定できる。

ob_clean();
mb_http_output("UTF-8");
ob_start("mb_output_handler");

IE 対策などで header を設定している場合、以下のように修正する。

header("Content-Type: text/html; charset=" . mb_http_output());

HTML にも以下のような変更が必要だ。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

phpで出力しているページの場合、上記の UTF-8 の部分を以下のように修正しておけば間違いない。

<?php echo mb_http_output(); ?>

post, get の値は文字コードを変換する。

mb_convert_encoding($_POST["name"], mb_internal_encoding(), mb_http_output());

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください