--> -->

skimemo


skimemo - 日記/2014-08-10/IlohaMailでCP932を表示する の変更点


#blog2navi()
*IlohaMailでCP932を表示する [#la83d492]

IlohaMailは一応一通りの日本語エンコードに対応しているようで、lang/jp/jcode.inc にも以下のコメントがあります。~
~
■lang/jp/jcode.inc
#code(java,first-line:11){{
//0:AUTO DETECT
//1:EUC-JP
//2:Shift_JIS
//3:ISO-2022-JP(JIS)
}}
(UTFはたぶんjp以外の所で対応)~
~
しかし、auのezwebメールは、こんなcharsetで本文を送ってくるため、デコードできずに化けてしまいます。~
~
■ヘッダーの記述
>Content-Type: text/plain; charset=cp932
<
■本文
>&#65533;&#65533;&#65533;C&#65533;&#65533;&#65533;&#65533;H ~
8&#65533;&#65533;9&#65533;&#65533;`12&#65533;&#65533;(3&#65533;&#65533;4&#65533;&#65533;j&#65533;淀&#65533;&#65533;&#65533;&#65533;B
<
そこで、とりあえず読めれば良いので、CP932をSJISと見なして変換させます。~
変更箇所は1カ所。
~
■lang/EUC-JP.inc
~
■lang/EUC-JP.inc~
まずCP932を対応文字セットとして追加します。~
#code(java,first-line:31){{
	$CS_CAN_CONVERT["ISO-2022-JP"]=1;
	$CS_CAN_CONVERT["EUC-JP"]=1;
	$CS_CAN_CONVERT["X-EUC-JP"]=1;
	$CS_CAN_CONVERT["Shift-JIS"]=1;
	$CS_CAN_CONVERT["JIS"]=1;
	$CS_CAN_CONVERT["ISO-8859-1"]=1;
	$CS_CAN_CONVERT["CP932"]=1;
}}
次にCP932の場合はJcodeConvertでのAUTO DETECTが効かなかったので、if文で分けて処理します。~
#code(java,first-line:44){{
	}else if (strcasecmp($charset, "x-euc-jp")==0){
		if ($from_charset=="CP932"){
			return JcodeConvert($string, 2, 1);
		} else {
			return JcodeConvert($string, 0, 1);
		}
	}else{
}}
まずCP932を対応文字セットとして追加します。~
次にCP932の場合はjcode.incでのAUTO DETECTが効かなかったので、if文で分けて処理します。~

~
これで正常にデコードされるようになりました。

RIGHT:Category: &#x5b;[[Linux>日記/Category/Linux]]&#x5d; - 11:01:02
----
RIGHT:&blog2trackback();
#comment(above)
#blog2navi()