在Javascript中打印所有ASCII字符

时间:2012-10-09 07:29:36

标签: javascript unicode ascii

我需要做这样的事情:

  1. 拥有某种类型的变量。
  2. 循环运行并将所有可能的ASCII字符分配给此变量并逐个打印。
  3. UNICODE也有类似的可能吗?

3 个答案:

答案 0 :(得分:12)

我不确定你想要打印的确切程度,但这将是console.log可打印的ascii

for(var i=32;i<127;++i) console.log(String.fromCharCode(i));

如果那是你的意图,你可以document.write。如果环境是unicode,它也适用于unicode,我相信。

答案 1 :(得分:0)

有一些ASCII字符是不可打印的,但是例如将字符从32(空格)变为126(〜),您将使用:

var s = '';
for (var i = 32; i <= 127; i++) s += String.fromCharCode(i);

unicode字符集有超过110,000个不同的字符(请参阅Unicode),但普通字体不包含所有字符,因此无论如何都无法显示它们。您必须指定您感兴趣的字符空间的哪些部分。

答案 2 :(得分:0)

其他人已经展示了如何打印可打印的Ascii字符。虽然它们是具有系统相关效果的控制字符(通常没有效果),但也可以打印所有其他Ascii字符。要创建包含字符串中所有Ascii字符的字符串,可以执行以下操作:

var s = '';
for (var i = 0; i <= 127; i++) s += String.fromCharCode(i);

Unicode更棘手,因为Unicode编码空间从0到0x10FFFF,包含大量未分配的代码点以及指定为非字符的代码点。还有私人使用代码点,可用于通过“私人协议”表示字符,但通常没有指定含义。此外,许多Unicode字符是非间距的,即意味着与前面的字符组合(例如,将“a”转换为“â”),因此您不能在视觉上将它们连续打印出来。 JavaScript中没有简单的方法可以从整数中确定相应代码点的类 - 您可能需要读取UnicodeData.txt文件,解析它,并使用其中的信息对代码点进行分类。

最后,编程问题是JavaScript的字符概念对应于16位代码单元(不是代码点),并且任何大于0xFFFF的Unicode代码点都需要使用两个代码单元来表示(所谓的代理人)。如果您在HTML文档的上下文中使用JavaScript并且想要在HTML内容中打印字符,那么最简单的方法是使用像&#x10400;这样的字符引用(表示代码点处的Unicode字符{{1十六进制)并将字符串赋值给元素的10400属性。

如果需要编写Unicode字符范围,可以查看我最近编写的Full Unicode Input实用程序。它的源代码说明了在JavaScript中处理Unicode字符的一些方法。