削除された内容 追加された内容
Addbot (会話 | 投稿記録)
m ボット: 言語間リンク 35 件をウィキデータ上の d:q193537 に転記
m編集の要約なし
11行目:
 
==エンコード体系==
[[ASCII]]文字と互換性を持たせるために、ASCIIと同じ部分は1バイト、その他の部分を2-6バイトで符号化する。4バイトのシーケンスでは21bit(0x1FFFFF)まで表現することができるが、Unicodeの範囲外となる17面以降を表すもの(U+10FFFFより大きなもの)は受け付けない。また5-6バイトの表現は、ISO/IEC 10646による定義<ref>[http://std.dkuug.dk/jtc1/sc2/wg2/ ISO/IEC 10646:2003] Information technology -- Universal Multiple-Octet Coded Character Set (UCS)</ref>と[[Internet Engineering Task Force|IETF]]によるかつての定義<ref>RFC 2279 UTF-8, a transformation format of ISO 10646</ref>で、Unicodeの範囲外を符号化するためにのみ使用するが、Unicodeによる定義<ref>[http://www.unicode.org/versions/Unicode5.2.0/ The Unicode Standard, Version 5.2]</ref>とIETFによる最新の定義<ref>RFC 3629 UTF-8, a transformation format of ISO 10646</ref>では、5-6バイトの表現は不正なシーケンスである。
 
ビットパターンは以下のようになっている。
223行目:
 
==サロゲートペアの扱い==
[[UTF-16]]の[[Unicode#サロゲートペア|代用対]](サロゲートペア)で表される[[基本多言語面|BMP]]外の文字をUTF-8に変換するときは、まず4バイトのサロゲートペア(代用対)(上位代用符号単位 0xD800-0xDBFF, 下位代用符号単位 0xDC00-0xDFFF)をU+10000からU+10FFFFまでの符号位置にデコードしてからUTF-8に符号化しなければならない。サロゲートペア(代用対)に使われるU+D800からU+DFFFまでの符号位置を、UTF-8でそのまま符号化することは禁止されており、不正なシーケンスとみなされる。
 
サロゲートペア(代用対)を残したままUTF-8と同等の符号化を行う規格は、'''CESU-8'''(Compatibility Encoding Scheme for UTF-16: 8-Bit)として別途定義されている。
これは、[[Oracle Database]]のバージョン8以前において、UTF-8文字は3バイトまでしか扱えなかったために便宜的に定義されている。4バイトのサロゲートペア(代用対)は使用せず、代わりに6バイトのサロゲートペア(代用対)(上位代用符号単位がED A0 80 - ED AF BF、下位代用符号単位が ED B0 80 - ED BF BF)で表現される<ref>現在のOracle Databaseでは、CESU-8を「UTF8」として、「普通のUTF-8」を「AL32UTF8」として扱っているため注意を要する。</ref>。
 
また、[[Java]]の一部の内部実装で用いられている'''Modified UTF-8'''も、サロゲートペアをそのまま残す仕様となっている。