|
本館粉絲專頁 |
|
|
使用者:Digipunk/PAGE/UNICODE
台灣棒球維基館
目次 |
[編輯] 特殊字元(UNICODE)
- 將特殊字元的 UNICODE 值轉為可顯示的字元,避免此站存取時出錯。
- 此站出錯時的情況為:可正常寫入、可正常顯示,但是再度編輯頁面時,該字元之後的文字都會不見,若此時沒注意而儲存,會造成頁面少掉一大塊內容。
[編輯] 語法
1 | {{特殊字元 | |
2 | <!-- 順序參數 --> | |
3 | | 1 | = <UNICODE 值,格式:U+24ADF 或 24ADF> |
4 | }} |
[編輯] 範例
[編輯] 罕用字
- 欲顯示罕用字:%U+24ADF%
- 利用底下的轉換工具,得知其 UNICODE(UTF-32)十六進位值為: U+24ADF
- 使用此模板,將它代換成 {{特殊字元|U+24ADF}} 即可在頁面上正常顯示,且不造成此站儲存、讀取的過程裡出錯。
[編輯] emoji
- 同理,部份 emoji 於此站可正常顯示與存取,但有些會造成存取問題,此情況亦可利用此模板解決。
- 利用底下的轉換工具,查詢欲顯示的 emoji 之 UNICODE(UTF-32)十六進位值。
- CPBL:%U+1F649% %U+1F418% %U+1F981% ⚔️ %U+1F432%
[編輯] 轉換工具
- 此工具僅轉換特殊字元,系統可正常存取的字元不處理。
function do_conv() {{{
var instr = document.getElementById('instr').value;
var outstr = '';
// 不適合用 length 與 substr(),超出 0xffff 的字元會被當成兩個字元,需要判斷高位元值,太麻煩
var idx = 0;
while ((cpt = instr.codePointAt(idx)) != undefined) {
if (cpt > 0xffff) {
outstr += '<SPAN STYLE="color:blue">{{特殊字元|U+' + cpt.toString(16).toUpperCase() + '}}</SPAN>';
idx++;
} else {
var c = String.fromCodePoint(cpt);
outstr += (c == '\n' ? '<BR>' : c);
}
idx++;
}
document.getElementById('outstr').innerHTML = outstr;
return false;
}}}
document.getElementById('instr').outerHTML = '<TEXTAREA ID="instr" STYLE="padding:8px;border:1px solid #666;background:#FFFFF8;width:400px;height:150px;box-sizing:border-box;border-radius:5px;overflow-y:auto;font:9pt/1.3 Consolas;resize:none"></TEXTAREA>';
document.getElementById('conv').outerHTML = '<BUTTON ID="conv" onclick="return do_conv()">轉換》</BUTTON>';
// event handlers
document.getElementById('conv').onclick = do_conv;
[編輯] 開發記錄
- [2020-09-09] 建立模板。