String.fromCharCode 是将 Unicode 编码值(0–65535)转为字符的静态方法,支持单个或多个整数参数,但不支持超出 BMP 的码点(应使用 fromCodePoint),且对非整数、负数或超限值处理不可靠。

String.fromCharCode 是 JavaScript 中用于将 Unicode 编码值(十进制数字)转换为对应字符的静态方法。它接收一个或多个整数参数,每个整数代表一个 UTF-16 编码单元,返回由这些编码组成的字符串。
基本用法:传入单个或多个 Unicode 码点
最常见的是传入一个或多个数字,例如:
-
String.fromCharCode(65)→"A"(大写字母 A 的 Unicode 码点是 65) -
String.fromCharCode(97, 98, 99)→"abc"(分别对应 a、b、c) -
String.fromCharCode(0x2603, 0x2600)→"☃☀"(十六进制写法,表示雪人和太阳符号)
注意:只支持 UTF-16 基本多文种平面(BMP)内的码点
该方法直接处理 UTF-16 编码单元(0–65535),对超出 BMP 的字符(如部分 emoji 或古文字,码点 ≥ 0x10000)不能直接传入原始码点。例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
String.fromCharCode(0x1F600)→ 得到的是错误的代理对片段(如"\uD83D\uDE00"并非直接显示 ?),实际会输出两个乱码字符 - 正确方式应使用
String.fromCodePoint(0x1F600)(ES6+),它支持任意 Unicode 码点
实用技巧:结合数组或变量动态生成字符串
可以配合 apply 或展开运算符把数字数组转成字符:
立即学习“Java免费学习笔记(深入)”;
-
String.fromCharCode.apply(null, [72, 101, 108, 108, 111])→"Hello" -
String.fromCharCode(...[72, 101, 108, 108, 111])→ 同样得到"Hello"(推荐,更简洁)
常见误区提醒
以下情况容易出错,需留意:
- 传入非整数(如小数、字符串数字)会被自动取整或转换,比如
String.fromCharCode("65")会先转为65,但String.fromCharCode("65.8")→"A"(因转整数后是 65) - 传入负数或大于 65535 的数,结果是空字符
"\0"或不可见字符(具体取决于引擎,行为不保证) - 它不解析十六进制字符串,
String.fromCharCode("0x41")会尝试转字符串 "0x41" 为数字 →NaN→ 结果是空字符串

















