パスワードを忘れた? アカウント作成
450352 journal

eurecaの日記: PHP4.3.4-Win32で起こったmb_send_mail()とSJISな夜

日記 by eureca
昨夜は涼しい夜で,一晩中窓を開けていた.そして,朝起きると喉が痛いというお決まりのパターンに,うんざりしながらも1限目の研究室の臨講に向かう.

mb_send_mail()でメールを発信するとき,冒頭でmb_language("ja")としているので,mb_convert_encoding()しなくとも自動的にJISに変換されて,メールが発信される.ここまではいいのだが,プログラムをSJISで書いている人のみこの先悲劇の運命を辿ることになる.一見,文字化けもないプレーンテキストが送信されたように見えるが,山本さんの山と本の間に\が入っている.あるいは予定が予\定などと表示される.\が文中に入ると,JISは2バイト文字を1バイトづつ解釈するので当然のごとくその後の文章が化ける.なぜこのような問題が生じるかというと,これはSJISは2バイト目にJISでは特殊な存在にあたる\が入っている文字があるためである.これは,Win32版で解決策があるのかどうか.addslash()でクオートすることで,とりあえずは文字化けはなくなるが,\の数は増える(笑).メールで送信する部分だけがJISであって,SQLを扱う部分に\は入らないので,俺はこれでもかまわないのだが,mlに投稿するシステムのため,やはり恥ずかしく解決とは言えない.こんな微妙なことに悩みながら夕べは大分遅い就寝になったのだった.おそらくPHPでメールを扱った人ならば,一度はこのような経験をしているに違いない.
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...