Vim-Wiki中使用Unicode字符
配套Javascript脚本
为了在VimWiki中使用Unicode字符,
我们在网页模板的JS中定义了一个自定义标签esp-unicode
:
jadeUtils.initCustomElements = function () { /** 创建自定义标签,*/ class EscapeUnicode extends HTMLElement { constructor() { super(); let oldHtml = this.innerHTML; this.innerHTML = oldHtml.replaceAll(/(&#x?[0-9a-fA-F]{1,6};)/m, (str) => { // console.log(pam); console.log(a); return '____'; return str.replace('&','&'); }); } } /** 创建自定义标签必须要有一个连字符*/ customElements.define('esp-unicode', EscapeUnicode); };
这样在wiki文件中就可以用自定义标签显示字符了:
<esp-unicode>⛵</esp-unicode>
显示为:
显示为:
查找unicode的代码
-
如果要查找常用的Unicode字符可以在这里查找:
https://symbl.cc/cn/
-
把上面查找到的字符复制到这个工具里可以看它的编码:
https://unicode.yunser.com/unicode
Unicode在HTML、CSS、Javascript中不同的显示
Unicode的编码在HTML中以10进制表示或16进制表示都有,在Javascript与CSS中以16进制表示。
-
Javascript语法:
\u
+ 16进制编码,如:\u5b89
-
CSS语法:
\
+ 16进制编码,如:\5b89
-
HTML语法:
&#
+ 10进制编码 +;
,如:⛵
; 或是&#x
+ 16进制编码 +;
,如:⛵
JavaScript中,可以使用charCodeAt()
或者codePointAt()
方法来获取字符的
Unicode 码,结果用十进制表示:
'安'.charCodeAt (); // 23433 '安'.codePointAt(); // 23433
由于获取到的是十进制数,所有如果想在 js 和 css 里面用的话,
就需要用toString(16)
转 16 进制,然后再做进一步处理了:
// 输出字符串:"\u8317" var unicode = '\\u' + '茗'.charCodeAt().toString(16); // 输出汉字:"茗" JSON.parse('"' + unicode + '"'); // 或者使用eval解析也可以 eval('"' + unicode + '"');
另一种方法,就将十进制Unicode码为36213的字符转换为字符串,然后将此字符串输出:
String.fromCharCode(36213);
在现在的wiki类net.jadedungeon.wiki
里,
提供了两个按Unicode字符查找对应十进制与十六进制编码的工具:
self.transUnicodeWikiInHex = function (c) { return "<esp-unicode>&#x" + c.charCodeAt().toString(16) + ";</esp-unicode>"; }; self.transUnicodeWikiInDec = function (c) { return "<esp-unicode>&#" + c.charCodeAt() + ";</esp-unicode>"; };
可以在控制台里直接调用:
page.transUnicodeWikiInDec('⛵'); > "<esp-unicode>⛵</esp-unicode>" page.transUnicodeWikiInHex('⛵'); > "<esp-unicode>⛵</esp-unicode>"