「サロゲートペアのコードポイント表記」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
編集の要約なし |
||
| 5行目: | 5行目: | ||
サロゲートペアのコードポイント (16面 x 65536字) | サロゲートペアのコードポイント (16面 x 65536字) | ||
第1面 SMP 追加多言語面 | 第1面 SMP 追加多言語面 U+10000 - U+1FFFF | ||
第2面 SIP 追加漢字面 | 第2面 SIP 追加漢字面 U+20000 - U+2FFFF | ||
… | … | ||
第15面 私用面 | 第15面 私用面 U+F0000 - U+FFFFF | ||
第16面 私用面 U+100000 - U+10FFFF | 第16面 私用面 U+100000 - U+10FFFF | ||
.. 16 x 256 x 256 = 16 x 65536 = 1,048,576字 | .. 16 x 256 x 256 = 16 x 65536 = 1,048,576字 | ||
| 21行目: | 21行目: | ||
\uD800\uDC00 (U+10000) - \uDBFF\uDFFF (U+10FFFF) | \uD800\uDC00 (U+10000) - \uDBFF\uDFFF (U+10FFFF) | ||
サロゲートペアの全文字を検索(鬼車正規表現) | |||
[\x{10000}-\x{10FFFF}] | [\x{10000}-\x{10FFFF}] | ||
鬼車では、サロゲートペアの U+1F017 \uD83C\uDC17 を \x{1f017} のよう | 鬼車では、サロゲートペアの U+1F017 \uD83C\uDC17 を \x{1f017} のよう | ||
なコードポイント、または文字集合の文字で指定します。 | |||
※(ご注意) Mery 1.1.2.2840 に添付の onig.dll では、この \x{1f017} の | ※(ご注意) Mery 1.1.2.2840 に添付の onig.dll では、この \x{1f017} の | ||
| 32行目: | 32行目: | ||
通常の UCS-2 は、たとえば \u4E0A 上 は、\x{4e0a} または \x0a\x4e | 通常の UCS-2 は、たとえば \u4E0A 上 は、\x{4e0a} または \x0a\x4e | ||
または、文字集合の文字で検索します。 | |||
※ Mery の鬼車で、コードポイントではなく、内部コードによる検索をしたい | |||
ときは、Mery 内部の UTF-16LE の1バイトずつを連続の16進数で表記します。 | |||
サロゲートペアの U+1F017 \uD83C\uDC17 は \x3c\xd8\x17\xdc として検索 | |||
できます。 | |||
</pre> | </pre> | ||
| 38行目: | 43行目: | ||
サロゲートペア コードポイント表記 (U+1HHHH) と 内部コード表記 (\uHHHH\uHHHH) の置換 | サロゲートペア コードポイント表記 (U+1HHHH) と 内部コード表記 (\uHHHH\uHHHH) の置換 | ||
内部コードは JavaScript | 内部コードは JavaScript 表記。 | ||
鬼車では、この内部コード表記での検索はできません(上記参照)。 | |||
※ マクロitokusu_SurrogatePair: [[ファイル:itokusu_SurrogatePair.zip]] | |||
<source lang="javascript"> | <source lang="javascript"> | ||
// - ------------------------ -------------- | // - 糸くす~------------------------------------- Copyright(C)2011-2012 inuuik - | ||
// サロゲートペア_内部コードをコードポイントに.js | // サロゲートペア_内部コードをコードポイントに.js | ||
// | // | ||
| 48行目: | 57行目: | ||
// | // | ||
// revised inuuik 2012-09-11 | // revised inuuik 2012-09-11 | ||
// revised inuuik 2012-09-23 | |||
// - ------------------------ -------------------------------------------------- | // - ------------------------ -------------------------------------------------- | ||
var s = document.selection; | { | ||
if (!s.IsEmpty) { | var s = document.selection; | ||
if (!s.IsEmpty) { | |||
var t = s.Text; | |||
var re = /\\u(D[89AB][0-9A-F]{2})\\u(D[C-F][0-9A-F]{2})/ig; | |||
if (re.test(t)) { | |||
s.Text = t.replace(re, | |||
function(str, p1, p2, offset, s) { | |||
var ucp = "", pre = "U+"; | |||
if (p1 === undefined || p2 === undefined) { | |||
return ucp; | |||
} | |||
ucp = ((((parseInt(p1, 16) & 0x000003ff) << 10) | (parseInt(p2, 16) & 0x000003ff)) + 0x00010000).toString(16).toUpperCase(); | |||
return pre + ucp; | |||
} | |||
); | |||
} | |||
} | } | ||
} | } | ||
| 66行目: | 83行目: | ||
<source lang="javascript"> | <source lang="javascript"> | ||
// - ------------------------ -------------- | // - 糸くす~------------------------------------- Copyright(C)2011-2012 inuuik - | ||
// サロゲートペア_コードポイントを内部コードに.js | // サロゲートペア_コードポイントを内部コードに.js | ||
// | // | ||
| 73行目: | 90行目: | ||
// | // | ||
// revised inuuik 2012-09-11 | // revised inuuik 2012-09-11 | ||
// revised inuuik 2012-09-23 | |||
// - ------------------------ -------------------------------------------------- | // - ------------------------ -------------------------------------------------- | ||
var s = document.selection; | { | ||
if (!s.IsEmpty) { | var s = document.selection; | ||
if (!s.IsEmpty) { | |||
var t = s.Text; | |||
var re = /(?:U\+)?(1?[0-9A-F][0-9A-F]{4})/ig; | |||
if (re.test(t)) { | |||
s.Text = t.replace(re, | |||
function(str, p1, offset, s) { | |||
var spu = "", spl = "", pre = "\\u", ucp_i; | |||
if (p1 === undefined) { | |||
return spu; | |||
} | |||
spu = (0x0000d800 | (((ucp_i = parseInt(p1, 16)) - 0x00010000) >> 10)).toString(16).toUpperCase(); | |||
spl = (0x0000dc00 | (ucp_i & 0x000003ff)).toString(16).toUpperCase(); | |||
return pre + spu + pre + spl; | |||
} | |||
); | |||
} | |||
} | } | ||
} | } | ||
// - ------------------------ -------------------------------------------------- | // - ------------------------ -------------------------------------------------- | ||
</source> | </source> | ||
2012年9月23日 (日) 00:15時点における版
Mery マクロ: サロゲートペアのコードポイント表記
Surrogate Pair : Unicode UCS-4 (4バイト文字)
サロゲートペアのコードポイント (16面 x 65536字)
第1面 SMP 追加多言語面 U+10000 - U+1FFFF
第2面 SIP 追加漢字面 U+20000 - U+2FFFF
…
第15面 私用面 U+F0000 - U+FFFFF
第16面 私用面 U+100000 - U+10FFFF
.. 16 x 256 x 256 = 16 x 65536 = 1,048,576字
サロゲートペアの内部コード (4バイトの16進数 上位1024字 + 下位1024字)
上位 0xD800 - 0xDBFF 0x400 (1024字) D8 D9 DA DB 0x100 (256字) x 4
下位 0xDC00 - 0xDFFF 0x400 (1024字) DC DD DE DF 0x100 (256字) x 4
.. 1024 x 1024 = 1,048,576字
サロゲートペア (UCS-4 4バイト文字) 1,048,576字
\uD800\uDC00 (U+10000) - \uDBFF\uDFFF (U+10FFFF)
サロゲートペアの全文字を検索(鬼車正規表現)
[\x{10000}-\x{10FFFF}]
鬼車では、サロゲートペアの U+1F017 \uD83C\uDC17 を \x{1f017} のよう
なコードポイント、または文字集合の文字で指定します。
※(ご注意) Mery 1.1.2.2840 に添付の onig.dll では、この \x{1f017} の
検索はできません。コード表記ではない文字集合は使えます。
通常の UCS-2 は、たとえば \u4E0A 上 は、\x{4e0a} または \x0a\x4e
または、文字集合の文字で検索します。
※ Mery の鬼車で、コードポイントではなく、内部コードによる検索をしたい
ときは、Mery 内部の UTF-16LE の1バイトずつを連続の16進数で表記します。
サロゲートペアの U+1F017 \uD83C\uDC17 は \x3c\xd8\x17\xdc として検索
できます。
サロゲートペア コードポイント表記 (U+1HHHH) と 内部コード表記 (\uHHHH\uHHHH) の置換
内部コードは JavaScript 表記。 鬼車では、この内部コード表記での検索はできません(上記参照)。
※ マクロitokusu_SurrogatePair: ファイル:itokusu SurrogatePair.zip
// - 糸くす~------------------------------------- Copyright(C)2011-2012 inuuik -
// サロゲートペア_内部コードをコードポイントに.js
//
// サロゲートペアの表記置換(1字の表記を選択して実行)
// 内部コード表記 (\uHHHH\uHHHH) をコードポイント表記 (U+1HHHH) に置換
//
// revised inuuik 2012-09-11
// revised inuuik 2012-09-23
// - ------------------------ --------------------------------------------------
{
var s = document.selection;
if (!s.IsEmpty) {
var t = s.Text;
var re = /\\u(D[89AB][0-9A-F]{2})\\u(D[C-F][0-9A-F]{2})/ig;
if (re.test(t)) {
s.Text = t.replace(re,
function(str, p1, p2, offset, s) {
var ucp = "", pre = "U+";
if (p1 === undefined || p2 === undefined) {
return ucp;
}
ucp = ((((parseInt(p1, 16) & 0x000003ff) << 10) | (parseInt(p2, 16) & 0x000003ff)) + 0x00010000).toString(16).toUpperCase();
return pre + ucp;
}
);
}
}
}
// - ------------------------ --------------------------------------------------
// - 糸くす~------------------------------------- Copyright(C)2011-2012 inuuik -
// サロゲートペア_コードポイントを内部コードに.js
//
// サロゲートペアの表記置換(1字の表記を選択して実行)
// コードポイント表記 (U+1HHHH) を内部コード表記 (\uHHHH\uHHHH) に置換
//
// revised inuuik 2012-09-11
// revised inuuik 2012-09-23
// - ------------------------ --------------------------------------------------
{
var s = document.selection;
if (!s.IsEmpty) {
var t = s.Text;
var re = /(?:U\+)?(1?[0-9A-F][0-9A-F]{4})/ig;
if (re.test(t)) {
s.Text = t.replace(re,
function(str, p1, offset, s) {
var spu = "", spl = "", pre = "\\u", ucp_i;
if (p1 === undefined) {
return spu;
}
spu = (0x0000d800 | (((ucp_i = parseInt(p1, 16)) - 0x00010000) >> 10)).toString(16).toUpperCase();
spl = (0x0000dc00 | (ucp_i & 0x000003ff)).toString(16).toUpperCase();
return pre + spu + pre + spl;
}
);
}
}
}
// - ------------------------ --------------------------------------------------
スポンサーリンク