PHPメモ-他外国語の特殊文字-

謎猫ギリシャ語のアクセントを使用の際、PHPはサーバーサイドのプログラムなのに、InterExplorerとNetScapeで動作が違う事についていろいろ考えてみたー
謎猫どうやらブラウザからサーバーに受け渡す際のギリシャ文字(アクセント付)等のエンコード形式がIEとNetScapeでは違うようであるー

例えば「ς(語尾シグマ)」をURLエンコードすると
IEでは「%26%23962%3B」
NetScapeでは「%8F%A6%F8」
と、違いがあるようでー

謎猫というわけで対策としてー
urlencode()
IE用処理
NS用処理
urldecode()
という処理を行ったところ正常にできたー

謎猫ちなみにー
他外国文字とかのかなり特殊な文字を使わない限りこの処理は必要ないかと思われるので宜しくー

謎猫実際に作った関数ー

function GreekConversion($WORD){ //特殊文字成形(検索用)
$WORD = urlencode($WORD);
//IE
$WORD = eregi_replace('%26%23962%3B',"s",$WORD);
$WORD = eregi_replace('%26%23940%3B',"¥'α",$WORD);
$WORD = eregi_replace('%26%23941%3B',"¥'ε",$WORD);
$WORD = eregi_replace('%26%23942%3B',"¥'η",$WORD);
$WORD = eregi_replace('%26%23943%3B',"¥'ι",$WORD);
$WORD = eregi_replace('%26%23972%3B',"¥'ο",$WORD);
$WORD = eregi_replace('%26%23973%3B',"¥'υ",$WORD);
$WORD = eregi_replace('%26%23974%3B',"¥'ω",$WORD);

//NetScape
$WORD = eregi_replace('%8F%A6%F8',"s",$WORD);
$WORD = eregi_replace('%8F%A6%F1',"¥'α",$WORD);
$WORD = eregi_replace('%8F%A6%F2',"¥'ε",$WORD);
$WORD = eregi_replace('%8F%A6%F3',"¥'η",$WORD);
$WORD = eregi_replace('%8F%A6%F4',"¥'ι",$WORD);
$WORD = eregi_replace('%8F%A6%F7',"¥'ο",$WORD);
$WORD = eregi_replace('%8F%A6%F9',"¥'υ",$WORD);
$WORD = eregi_replace('%8F%A6%FC',"¥'ω",$WORD);

$WORD = urldecode($WORD);

return $WORD;
}

コメント
コメントする








    
この記事のトラックバックURL
トラックバック