我需要做这样的事情:
- 有某种类型的变量。
- 循环运行并将所有可能的 ASCII 字符分配给该变量并逐个打印它们。
UNICODE 也有类似的可能吗?
我需要做这样的事情:
UNICODE 也有类似的可能吗?
我不确定您要打印的确切程度,但这将是console.log
可打印的 ascii
for(var i=32;i<127;++i) console.log(String.fromCharCode(i));
document.write
如果这是你的意图,你可以。如果环境是 unicode,我相信它也应该适用于 unicode。
有一些 ASCII 字符是不可打印的,但例如从 32(空格)到 126(~),您可以使用:
var s = '';
for (var i = 32; i <= 127; i++) s += String.fromCharCode(i);
unicode 字符集有超过 110,000 个不同的字符(参见Unicode),但普通字体并不包含所有这些字符,因此无论如何您都无法显示它们。您必须指定您感兴趣的字符空间的哪些部分。
其他人已经展示了如何打印可打印的 Ascii 字符。也可以打印所有其他 Ascii 字符,尽管它们是具有系统相关效果的控制字符(通常没有效果)。要将包含所有 Ascii 字符的字符串创建为字符串,您可以执行以下操作:
var s = '';
for (var i = 0; i <= 127; i++) s += String.fromCharCode(i);
Unicode 要复杂得多,因为从 0 到 0x10FFFF 的 Unicode 编码空间包含大量未分配的代码点以及指定为非字符的代码点。还有私人使用代码点,可用于通过“私人协议”来表示字符,但没有普遍指定的含义。此外,许多 Unicode 字符是无间距的,即与前面的字符组合(例如,将“a”转换为“â”),因此您无法直观地连续打印它们。JavaScript 中没有简单的方法可以从整数确定相应代码点的类 - 您可能需要读取 UnicodeData.txt 文件,对其进行解析,并使用其中的信息对代码点进行分类。
最后还有一个编程问题,JavaScript 的字符概念对应一个 16 位的代码单元(不是代码点),任何大于 0xFFFF 的 Unicode 代码点都需要用两个代码单元(所谓的代理)来表示。如果您在 HTML 文档的上下文中使用 JavaScript,并且想要打印 HTML 内容中的字符,那么最简单的方法是使用字符引用(如𐐀
(表示代码点10400
十六进制的 Unicode 字符))并将字符串分配给innerHTML
元素的属性。
如果您需要输入 Unicode 字符范围,您可以查看我最近编写的完整 Unicode 输入实用程序。它的源代码说明了在 JavaScript 中处理 Unicode 字符的一些方法。