Pro*_*ogo 5 javascript unicode character character-encoding
我正在尝试使JavaScript打印所有Unicode字符。根据我的研究,有1,114,112个Unicode字符。
如下所示的脚本可以工作:
for(i = 0; i < 1114112; i++)
console.log(String.fromCharCode(i));
Run Code Online (Sandbox Code Playgroud)
但是我发现在1,114,112个Unicode字符中仅使用了10%。
我如何只能打印使用的unicode字符?
正如Jukka所说,JavaScript没有内置的方法来知道给定的Unicode代码点是否已分配了符号。
不过,仍然有一种方法可以做您想要的。
我已经编写了几个 脚本来解析Unicode数据库,并为Unicode中的每个类别,属性,脚本,块等创建单独的数据文件。我还创建了一个HTTP API,该API可让您以编程方式获取给定Unicode类别中的所有代码点(即数字数组),或具有给定Unicode属性的所有符号(即每个字符的字符串数组),或者一个与特定Unicode脚本中的任何符号匹配的正则表达式。
例如,要获取一个字符串数组,其中每个字符串在Unicode v6.3.0中已分配了一个符号,其中每个条目都包含一个项目,则可以使用以下URL:
http://mathias.html5.org/data/unicode/format?version=6.3.0&property=Assigned&type=symbols&prepend=window.symbols%20%3D%20&append=%3B
Run Code Online (Sandbox Code Playgroud)
请注意,您可以通过调整URL参数在输出之前添加和添加任何喜欢的东西,以使其更容易在自己的脚本中重复使用数据。根据console.log()您的要求,包含所有这些符号的示例HTML页面可以编写如下:
<!DOCTYPE html>
<meta charset="utf-8">
<title>All assigned Unicode v6.3.0 symbols</title>
<script src="http://mathias.html5.org/data/unicode/format?version=6.3.0&property=Assigned&type=symbols&prepend=window.symbols%20%3D%20&append=%3B"></script>
<script>
window.symbols.forEach(function(symbol) {
// Do what you want to do with `symbol` here, e.g.
console.log(symbol);
});
</script>
Run Code Online (Sandbox Code Playgroud)
演示。请注意,由于其中包含大量数据,因此打开该页面时,您的DevTools控制台可能会变慢。
更新:现在,您应该改用Unicode数据包,例如unicode-11.0.0。在Node.js中,您可以执行以下操作:
const symbols = require('unicode-11.0.0/Binary_Property/Assigned/symbols.js');
console.log(symbols);
// Or, to get the code points:
require('unicode-11.0.0/Binary_Property/Assigned/code-points.js');
// Or, to get a regular expression that only matches these characters:
require('unicode-11.0.0/Binary_Property/Assigned/regex.js');
Run Code Online (Sandbox Code Playgroud)