PHP
Oracleなどから受け取る文字コードは環境変数にて設定する。
変数名 NLS_LANG
変数Japanese_Japan.JA16SJIS
———————————————————————–
PHPの文字化けを起こらないようにするには
自動変換を利用しない
http_input
http_output
default_charset
GET,POSTのデータを手動で変換する。
———————————————————————–
;; Disable Output Buffering
output_buffering = Off
;;HTTPヘッダの自動出力(利用しない)
;; Set HTTP header charset
; default_charset = EUC-JP
;;mb_send_mailの利用時に参照される(mb_send_mailは利用しない)
;; Set default language to Japanese
mbstring.language = Japanese
;; HTTP input encoding translation is enabled.
mbstring.encoding_translation = off
;; Set HTTP input encoding conversion to auto
mbstring.http_input = pass
;;ob_start(”mb_output_handler”)の記述により使用される
;; Convert HTTP output to EUC-JP
mbstring.http_output = pass
;;mbstring関数のデフォルト(省略時)に参照される
;;必須なのはmb_decode_mineheader利用時
;;ソースコードをEUC-JPで記述してもEUC-JPである必要は無い
;; Set internal encoding to EUC-JP
mbstring.internal_encoding = EUC-JP
;; Do not print invalid characters
mbstring.substitute_character = none
;;文字コード自動検出の優先順位であり、autoは使わず必ず指定する
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
———————————————————————–
SJIS 5C問題
「ソ」、「表」の記述でパーサエラーとなる
解決方法
–enable-zend-multibyteをつけてコンパイル
php.ini
mbstring.script_encoding = Shift_JIS