トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

PHP/文字コード

Last-modified: 2011-11-14 (月) 20:42:15 (2196d)
Top / PHP / 文字コード

PHP

文字コード設定を表示

print_r(mb_get_info("all"));

表示例

[internal_encoding] => UTF-8
[http_input] =>
[http_output] => SJIS-win
[func_overload] => 0
[func_overload_list] => no overload
[mail_charset] => ISO-2022-JP
[mail_header_encoding] => BASE64
[mail_body_encoding] => 7bit
[illegal_chars] => 0
[encoding_translation] => Off
[language] => Japanese
[detect_order] => Array ( [0] => ASCII [1] => JIS [2] => UTF-8 [3] => EUC-JP [4] => SJIS )
[substitute_character] => none
[strict_detection] => Off

スクリプト内での文字コード設定

	mb_language('Japanese');
	ini_set('mbstring.detect_order', 'auto');
	ini_set('mbstring.encoding_translation', 0);
	ini_set('mbstring.http_input', 'pass');
	ini_set('mbstring.http_output', 'pass');
	ini_set('mbstring.internal_encoding', 'UTF-8');
	ini_set('mbstring.script_encoding', 'UTF-8');
	ini_set('mbstring.substitute_character', 'none'); 

	if (isset($_GET)) {
		mb_convert_variables(mb_internal_encoding(), mb_http_input(), $_GET);
	}

	if (isset($_POST)) {
		mb_convert_variables(mb_internal_encoding(), mb_http_input(), $_POST);
	}

ネタ元からくり屋のブログ

UTF-8で作ったページをShift-JISで出力する方法

<?php
header('Content-Type: text/html; charset=Shift_JIS');
ob_start();
?>
ここにShift-JISで出力したい内容をUTF-8で記述。
<?php
$output = ob_get_contents();
ob_end_clean();
echo mb_convert_encoding($output, "SJIS", "UTF-8");
?>

ネタ元IDEA*IDEA

mb_send_mailを使わずPEAR::MailでSMTP送信する

mb_send_mailで利用される文字コードはlanguageパラメータに依存し、languageにJapaneseと指定してもISO-2202-JP、UTF-8、SJISで送るのか全く不明のため。 それにマルチパートメールの場合は文字コードが一律でないことがあり、例えばdocomoのデコメールはテキスト部分はJISだがHTML部分はSJISとなります。

ネタ元PHPの文字化けを本気で解決する ぎじゅっやさん

リンク