MySQLのordが返す値

Pocket

MySQLで文字コードを得るにはASCII()という関数を使います。
マルチバイト文字(日本語の全角文字など)についてはord()を使います。
しかし返す値がよく分かりません。

リファレンスには次の通り書かれています。

ストリング str の左端の文字がマルチバイト文字の場合は、次の公式を使ってその構成バイトの数値から計算された、その文字のコードを戻します :
(1st byte code)
+ (2nd byte code × 256)
+ (3rd byte code × 2562) ...
左端の文字がマルチバイト文字でない場合は、ORD() は ASCII() 関数と同じ値を戻します。

ord('ア') は 14910114となります。
この「ア」を使って順を追って確認します。

まず「ア」の構成バイトを調べます。
マルチバイト文字をURIで使う場合に使用する変換で、「ア」の場合は「%E3%82%A2」となります。
例えばGoogleなどで「ア」を検索するとアドレス欄に表示されるのがこれです。
JavaScriptのencodeURIComponentなどを使うと確認できます。

「%E3」は16進数です。「E」は「0123456789ABCDEF」の(0から数えて)14番目、「3」は3番目ですので、16*14+3=227となります。
同様に「%82」は130、「%A2」は162となります。

順に256*256倍、256倍、1倍を計算し、合計します。
%E3*256*256 + %82*256 + %A2
=227*256*256 + 130*256 + 162
=14876672 + 33280 + 162
=14910114

ord('ア')と一致しました。

[ 2011年11月21日 | カテゴリー: デジタル | タグ: , , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報