日記移転先(゜▽゜)

という名前の適当な日記ブログ


| Home | Index | Links | About |

Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

UTF-8+URLエンコードを見る

最近まで見る時はツール等に丸投げしてたが理解してたほうが便利そうなので調べてみた。

web上で探すとUnicode/UTF-8/UTF-16関係は昔のバージョンでの事やら
間違った記述やら混乱させられるページ結構ありますな(;´Д`)
まあこの辺りは難しくもない事なんで整理して理解。
今回はURLエンコードされた文字列を変換無しのまま「見る」って事で。
※ここはクソ日記なので用語も書式もかなり適当です。

↓UnicodeとUTF-8のオクテット数
U+0000-007F →1バイト
U+0080-07FF →2バイト
U+0800-FFFF →3バイト
U+10000-10FFFF →4バイト
(それ以上(?) →5-6バイト)

UTF-8は17面×256×256なUnicodeの文字セットの文字のエンコード(可変長)。
日本語文字列だと大体半角英数字が1バイトで他は3バイトになるって所か。
3バイトになるのが知らない人にぱっと見で拒絶したくなる所。


↓URLエンコードされたUTF-8の例
ABC 日本語→ABC+%E6%97%A5%E6%9C%AC%E8%AA%9E

調べてみるとUTF-8って文字の境界がはっきりしてるんですな
多バイト化しても2バイト目以降は上位2bitが10で固定、で80~BFの範囲に。

URLエンコードで「%8?、%9?、%A?、%B?」と%の次が「8、9、A、B」の物を除くと文字数が
容易に分かったり先頭が「C、D、E、F」だと多バイト化された文字の頭として
見て判別できる。
知ってるとAmazonやぐぐった時のURLがなんとなく分かってきた感じにならないかな?(^^;


更に細かく見るとする。
例えばシフトJISの2バイト文字なんかだと1バイト目に2区分入ってるだけなので
CP932(orJIS X0208)の文字セット頭に入ってりゃ1バイト目で大体分かる。↓
1バイト目
81 記号類
82 全角数字orひらがな
83 カタカナorギリシャ文字
84 キリル文字or罫線
87 ①、㍉等の記号類(NEC特殊文字)
88-98 第一水準(読み順)
98-EA 第二水準(部首画数順)
F0-F9 (外字)
FA- NEC選定IBM拡張文字,IBM拡張文字

UTF-8でも上のSJISのように見分けようと思うと…
U+3000-33FF →e3 80 80 ~ e3 8f 8f ひらがな/カタカナ/CJK記号/他
(U+3040-309F →e3 81 80 ~ e3 82 9f ひらがな)
(U+30A0-30FF →e3 82 a0 ~ e3 83 bf カタカナ)
U+4E00-9FFF →e7 b8 90 ~ e9 bf bf CJK統合漢字
U+F900-FAFF →ef a4 80 ~ ef ab bf CJK互換漢字
U+FF00-FFEF →ef bc 80 ~ ef bf bf 半角・全角形(半角カナや全角英数字等)

Unicodeだと半角カナ/全角文字が端においやられたり記号類が分散してるので
ぱっと見じゃかなり辛いですな…




新規
←管理者にだけ表示する場合チェック



トラックバック用URL:
http://r2089.blog36.fc2.com/tb.php/82-1af7d40b

Appendix

profile

那駕〇

Author:那駕〇

recent entries

アクセスの多い記事

過去の記事


義援金募集

FC2「東北地方太平洋沖地震」義援金募集につきまして

ブロとも申請フォーム

この人とブロともになる

カウンタ

※ここより下の部分に掲示板とかまとめとかいうリンクがあってもそれはfc2blogの広告なので当blog内コンテンツではないです(゜д゜)
まとめ
....
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。