RFC3629でUTF-8のバイト範囲が変更されている
最新のUTF-8では5〜6バイトの表現がすべて不正になったんですね
知らなかった…(ぉぃ
最新と言っても RFC3629 って2003年?ずいぶん前だな
他にもコマゴマと範囲が変わったみたい
RFC2279(旧)
1バイト | 2バイト | 3バイト | 4バイト | 5バイト | 6バイト | |
---|---|---|---|---|---|---|
UTF8-1 | 0x00 〜 0x7F | - | - | - | - | - |
UTF8-2*1 | 0xC0 〜 0xDF | UTF8-tail | - | - | - | - |
UTF8-3*2 | 0xE0 〜 0xEF | UTF8-tail | UTF8-tail | - | - | - |
UTF8-4*3 | 0xF0 〜 0xF7 | UTF8-tail | UTF8-tail | UTF8-tail | - | - |
UTF8-5*4 | 0xF8 〜 0xFB | UTF8-tail | UTF8-tail | UTF8-tail | UTF8-tail | - |
UTF8-6*5 | 0xFC 〜 0xFD | UTF8-tail | UTF8-tail | UTF8-tail | UTF8-tail | UTF8-tail |
- UTF8-tail は「0x80 〜 0xBF」
- RFC 2279 - UTF-8, a transformation format of ISO 10646
RFC3629(現)
1バイト | 2バイト | 3バイト | 4バイト | |
---|---|---|---|---|
UTF8-1 | 0x00 〜 0x7F | - | - | - |
UTF8-2*6 | 0xC2 〜 0xDF | UTF8-tail | - | - |
UTF8-3 | 0xE0 | 0xA0 〜 0xBF | UTF8-tail | - |
= | 0xE1 〜 0xEC | UTF8-tail | UTF8-tail | - |
= | 0xED | 0x80 〜 0x9F | UTF8-tail | - |
= | 0xEE 〜 0xEF | UTF8-tail | UTF8-tail | - |
UTF8-4 | 0xF0 | 0x90 〜 0xBF | UTF8-tail | UTF8-tail |
= | 0xF1 〜 0xF3 | UTF8-tail | UTF8-tail | UTF8-tail |
= | 0xF4 | 0x80 〜 0x8F | UTF8-tail | UTF8-tail |
- UTF8-tail は「0x80 〜 0xBF」
- 5〜6バイト表現は全て撤廃
- RFC 3629 - UTF-8, a transformation format of ISO 10646
このチェックロジック作るの面倒だなァ〜…