Wikipedia:Unicode numeric converter script

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

このページでは、Unicode数値参照変換スクリプトについて紹介します。

HTML[編集]

EmEditor Professional for Windows[編集]

Microsoft Windows用のテキストエディタとして、EmEditorがあります。これは、Unicodeをネイティブで扱えるため、ウィキペディアの編集に適しています。ここでは、EmEditor Professional版で使用できるWindows Scripting Hostを用いたマクロを紹介します。一部(document.selection.Text など)を除いてECMAScript互換のJScriptなので流用もしやすいでしょう。ただし、Standard版ではJScript形式のマクロは使用できないのでご注意ください。

単純に数値参照に変える[編集]

範囲選択されている部分を数値参照に変えます。

 // EmEditor Professinal用 Unicode数値参照変換スクリプト "num.jsee"
 var str = document.selection.Text; 
 var res = "";
 for (var i = 0, l = str.length; i < l; i++) {
   var c = str.charCodeAt(i);
   if ( c < 0x7f) {
     res += String.fromCharCode(c);
   } else {
     res += "&#" + c + ";"; //ソースからコピペする場合は&を文字参照から戻してください。
   }
 }

 document.selection.Text = res;

日本語版で扱えない文字のみ変える[編集]

このスクリプトは、全角半角変換も行いますが、漏れがかなりあります。実用上は問題ないでしょう。

 // Wikipedia日本語版用 Unicode数値参照変換スクリプト "wjnum.jsee"
 var str = document.selection.Text; 
 var res = "";

 for (var i = 0; i < str.length; i++) {
   var c = str.charCodeAt(i);
   // 全角・半角変換
   if ( 0xff10 <= c && c <= 0xff19 || // 全角数字
        0xff21 <= c && c <= 0xff3a || // 全角英大文字
        0xff40 <= c && c <= 0xff5a // 全角英小文字
      ) { 
     c -= 0xfee0;
   } else if (c == 0xff0c) { // 全角カンマ
     c = 0x2c;
   } else if (c == 0xff0e) { // 全角ピリオド
     c = 0x2e;
   } else if (c == 0xff61) { // 半角カナ句点
     c = 0x3002;
   } else if (c == 0xff62) { // 半角カナ鉤括弧
     c = 0x300c;
   } else if (c == 0xff63) { // 半角カナ鉤括弧
     c = 0x300d;
   } else if (c == 0xff64) { // 半角カナ読点
     c = 0x3001;
   } else if (c == 0xff65) { // 半角カナ中黒
     c = 0x30fb;
   }
   // 問題がでやすい文字を数値参照化
   if ( c < 0x7f || // 1byte英数
        0x3041 <= c && c <= 0x3094 || // ひらがな
        0x309b <= c && c <= 0x309e || // かな記号
        0x30a1 <= c && c <= 0x30fe || // カタカナ
        0x3000 <= c && c <= 0x3015 || // CJK記号
        0x4e00 <= c && c <= 0x9f90 || // CJK統合漢字
        0xff01 <= c && c <= 0xff0f || // !"#$%&'()**+,-./
        0xff1a <= c && c <= 0xff20 || // :;<=>?@
        0xff3b <= c && c <= 0xff3f || // [\]^_
        0xff5b <= c && c <= 0xff5e    // {|}~
      ){ 
     res += String.fromCharCode(c);
   } else {
     res += "&#" + c + ";"; //ソースからコピペする場合は&を文字参照から戻してください。
   }
 }

 document.selection.Text = res; //選択範囲 置換