Ajax 日本語処理


  クライアントのキャラクタセットをサーバーに送る



以下のクライアントコードは、サーバー側の php で urlencode させてクライアントに戻すというものです。パラメータとしてクライアント側のキャラクタセットが必要になるので、Ajax クライアント の 基本コード に追加します

utf-8 の urlencode は、クライアント側の JavaScript のメソッド で充分目的が達せられると思いますが、こまかい変換仕様にこだわるならば、サーバー側を使用すると良いでしょう。
( PHP には、rawurlencode という RFC 1738 に基づきURLエンコードを行う関数もあります )

  
<HTML>
<HEAD>
<META http-equiv="content-type" content="text/html; charset=shift_jis">
<SCRIPT language="javascript" type="text/javascript">

	var dom,bIE;
	var objXMLHttp;
	var charSet;

	if ( document.all ) {
		charSet = document.charset;
		bIE = true;
		dom = new ActiveXObject("Msxml2.DOMDocument.3.0");
		objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
	}
	else {
		charSet = document.characterSet;
		bIE = false;
		dom = document.implementation.createDocument("", "", null);
		objXMLHttp = new XMLHttpRequest();
	}


function GetUrlencode( ) {

	var result;
	var ndata = document.getElementsByName("indata")[0].value;
	ndata = encodeURIComponent(ndata);

	objXMLHttp.open(
		"GET",
		"urlencode.php?"
		 + "text=" + ndata
		 + "&charset=" + charSet
		, false );
	objXMLHttp.send( "" );
	result = objXMLHttp.responseText;

	document.getElementsByName("result")[0].value = result;

}

</SCRIPT>
</HEAD>
<BODY>

入力
<INPUT type=text name="indata" size="80">
<INPUT type=button name="send" value="送信" onClick='GetUrlencode( )'>
<br>
出力
<INPUT
	type="text"
	name="result"
	size="80"
	readonly
	 style='background-clor:silver'>
</br>

</BODY>
</HTML>
  

以下はサーバー側のコードです

  
<?
# **********************************************************
# PHP の urlencode をクライアントのキャラクタセット
# にあわせて変換して結果を返す
#
# ( このソースコードは、UTF-8N CR+LF です )
# **********************************************************
header( "Content-Type: text/xml; Charset=utf-8" );

mb_language( 'ja' );
mb_internal_encoding('UTF-8');

# PHP によって変換されてしまったコードを元に戻す
foreach( $_GET as $Key => $Value ) {
	$_GET[$Key] = str_replace("\\\\", "\\", $Value );
	$_GET[$Key] = str_replace("\\'", "'", $_GET[$Key] );
	$_GET[$Key] = str_replace("\\\"", "\"", $_GET[$Key] );
}

$text = 'charset が正しく指定されていません';

if ( strtoupper( $_GET['charset'] ) == 'SHIFT_JIS' ) {
	$ret = mb_convert_encoding(
		 $_GET['text'], "SHIFT_JIS", "UTF-8"
	);

	$text = urlencode( $ret );
}
if ( strtoupper( $_GET['charset'] ) == 'EUC-JP' ) {
	$ret = mb_convert_encoding(
		 $_GET['text'], "EUC-JP", "UTF-8"
	);

	$text = urlencode( $ret );
}
if ( strtoupper( $_GET['charset'] ) == 'UTF-8' ) {
	$text = urlencode( $_GET['text'] );
}

print $text;
?>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ