charset = UTF-8 □技術メモ - 文字コード および エンコード について ※管理人の個人的な技術メモです。このページの内容の実行結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- ○JIS漢字 ・JIS X 0208 1978年にJIS C 6226として制定され、1983年、1990年および1997年に改正された。 JIS第1第2水準漢字とも言う。 注意:なぜ制定・改定年を記載するかというと、例えば1997年に追加された漢字は、 1990年にリリースされたシステムがフォントを持っていない可能性があるため。 ・JIS X 0212 1990年10月1日制定のJIS X 0212において規定された。JIS X 0208と組み合わせて使用するらしい。 補助漢字とも言う。 ・JIS X 0213 2000年に制定、2004年、2012年に改正された。通称JIS2000、JIS2004と呼ばれる。 非漢字及び第三水準の文字を第一面としている。 第四水準の文字を第二面としている。 2004年の改正で、第三水準に10字が追加、168文字が字形変更された。 ・JIS X 0221 unicodeをベースに制定・改正されている規格。 対応するunicodeのバージョン 第1次規格 1995年制定 Unicode1.1 第2次規格 2001年制定 Unicode3.0 第3次規格 2007年制定 Unicode5.0 第4次規格 2014年改正 Unicode6.1 ----------------------------------------------------------- ○サロゲートペアについて (調査中) ----------------------------------------------------------- ○各種エンコード ・<あいう> を変換する。 ・(改行)=禱(トウ) を変換する。 ※禱(トウ)は、MsOfficeIME 2010では変換対象表示の際、「環境依存文字(unicode)」と表示される。 ・「あいう」「<>」「(改行)=禱」をTEXTファイル(sjis, utf-8, unicode)に書き込んで、バイナリエディタで開いた場合の それぞれのコードは以下の通り。 --------+----------------------------+-------------+-------------------------- : あいう : <> : (改行)=禱 --------+----------------------------+-------------+-------------------------- SJIS : 82 A0 82 A2 82 A4 : 3C 3E : 0D 0A 3D 3F // 禱は?に変換される UTF-8 : E3 81 82 E3 81 84 E3 81 86 : 3C 3E : 0D 0A 3D E7 A6 B1 unicode : 42 30 44 30 46 30 : 3C 00 3E 00 : 0D 00 0A 00 3D 00 B1 79 // (注1) --------+----------------------------+-------------+-------------------------- ※注1 リトルエンディアン , 下位バイトから書き込む BOM付きの場合、windowsなら先頭に FF FE が付く。 ・「<」「>」「=」「?」の文字参照は以下の通り。 10進 記号 16進 < < 003C < > > 003E > = 003D = ? 003F ? ・URLエンコード : URLの使用禁止文字を、%記号付き16進2桁に変換 (文字参照に変換) %3C%E3%81%82%E3%81%84%E3%81%86%3E <あいう> %0D%0A%3D%E7%A6%B1 (改行)=禱 ・HTMLエンコード : HTML中の所定の文字を、文字参照に変換 (文字参照に変換) <あいう> (改行)=禱 ・HEXエスケープ : 16進エスケープ (\xXX) に変換 (文字参照に変換) \x3c\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\x3e \xd\xa\x3d\xe7\xa6\xb1 ・Unicode (UTF-16) : 文字列をUTF-16 (\uXXXX) に変換 (unicodeに変換) <\u3042\u3044\u3046> (改行)=\u79b1 ・char型 char c="あ"; int iCode=(int)c; String hex=Integer.toHexString(iCode); 表示 : 3042 ----------------------------------------------------------- ○URLエンコード ・以下の2種類がある。 ・パーセントエンコーディングによる符号化 半角スペース → 「%20」に符号化される。 ・application/x-www-form-urlencodedによる符号化 HTTPのPOSTメソッドでWebフォームの文字列を送信する場合のエンコード。 半角スペース → 「+」に符号化される。 -----------------------------------------------------------