API参考
文本Unicode转换器底层功能和技术集成的技术参考。
核心函数
文本转Unicode转换
convertTextToUnicode(text, format)
将文本转换为指定格式的Unicode码点。
参数:
text
(字符串):要转换的输入文本format
(字符串):输出格式('decimal'、'hex'、'unicode-escape'、'html-entity')
返回:(字符串)Unicode表示
示例:
convertTextToUnicode('Hello', 'decimal');
// 返回:"72 101 108 108 111"
convertTextToUnicode('Hello', 'hex');
// 返回:"U+0048 U+0065 U+006C U+006C U+006F"
getCodePoint(char)
获取单个字符的Unicode码点。
参数:
char
(字符串):单个字符
返回:(数字)Unicode码点
示例:
getCodePoint('A');
// 返回:65
getCodePoint('😀');
// 返回:128512
Unicode转文本转换
convertUnicodeToText(unicode, format)
将Unicode码点转换为文本。
参数:
unicode
(字符串):Unicode输入format
(字符串):输入格式('decimal'、'hex'、'unicode-escape'、'html-entity')
返回:(字符串)转换后的文本
示例:
convertUnicodeToText('72 101 108 108 111', 'decimal');
// 返回:"Hello"
convertUnicodeToText('U+0048 U+0065 U+006C U+006C U+006F', 'hex');
// 返回:"Hello"
fromCodePoint(code)
从Unicode码点创建字符。
参数:
code
(数字):Unicode码点
返回:(字符串)字符
示例:
fromCodePoint(65);
// 返回:"A"
fromCodePoint(128512);
// 返回:"😀"
格式规范
十进制格式
- 模式:空格分隔的十进制数字
- 范围:0到1114111(0x10FFFF)
- 示例:
72 101 108 108 111
十六进制格式
- 模式:U+后跟4-6位十六进制数字
- 范围:U+0000到U+10FFFF
- 示例:
U+0048 U+0065 U+006C U+006C U+006F
Unicode转义格式
- 模式:\uXXXX或\u{XXXXXX}
- 范围:\u0000-\uFFFF或\u{0}-\u{10FFFF}
- 示例:
\u0048\u0065\u006C\u006C\u006F
HTML实体格式
- 模式:&#xXXXX;或&#XXXX;
- 范围:�到�或�到�
- 示例:
Hello
验证函数
isValidUnicode(code)
验证码点是否为有效Unicode。
参数:
code
(数字):Unicode码点
返回:(布尔值)如果有效则为true
示例:
isValidUnicode(65); // true
isValidUnicode(128512); // true
isValidUnicode(999999); // false
isValidUnicode(-1); // false
isValidFormat(input, format)
验证输入是否匹配指定格式。
参数:
input
(字符串):要验证的输入format
(字符串):预期格式
返回:(布尔值)如果有效则为true
示例:
isValidFormat('65 66 67', 'decimal'); // true
isValidFormat('U+0041 U+0042', 'hex'); // true
isValidFormat('\\u0041\\u0042', 'unicode-escape'); // true
isValidFormat('AB', 'html-entity'); // true
实用函数
normalizeUnicode(text, form)
使用指定形式规范化Unicode文本。
参数:
text
(字符串):输入文本form
(字符串):规范化形式('NFC'、'NFD'、'NFKC'、'NFKD')
返回:(字符串)规范化文本
示例:
normalizeUnicode('é', 'NFC'); // "é"(U+00E9)
normalizeUnicode('é', 'NFD'); // "é"(U+0065 U+0301)
getUnicodeBlock(code)
获取码点的Unicode块名称。
参数:
code
(数字):Unicode码点
返回:(字符串)块名称
示例:
getUnicodeBlock(65); // "Basic Latin"
getUnicodeBlock(128512); // "Emoticons"
getUnicodeBlock(19968); // "CJK Unified Ideographs"
isSurrogatePair(high, low)
检查两个码点是否形成有效的代理对。
参数:
high
(数字):高代理码点low
(数字):低代理码点
返回:(布尔值)如果是有效对则为true
示例:
isSurrogatePair(0xd83d, 0xde00); // true(😀)
isSurrogatePair(0x0041, 0x0042); // false
错误处理
错误类型
InvalidUnicodeError
当Unicode码点无效时抛出。
属性:
code
:无效码点message
:错误描述
FormatError
当输入格式无效时抛出。
属性:
input
:无效输入format
:预期格式message
:错误描述
RangeError
当码点超出有效范围时抛出。
属性:
code
:超出范围的码点min
:最小有效值(0)max
:最大有效值(0x10FFFF)
错误处理示例
try {
const result = convertUnicodeToText('999999', 'decimal');
} catch (error) {
if (error instanceof InvalidUnicodeError) {
console.log(`无效的Unicode代码:${error.code}`);
} else if (error instanceof FormatError) {
console.log(`无效格式:${error.message}`);
}
}
性能考虑
内存使用
- 文本处理:输入文本的O(n)内存使用
- 大输入:分块处理以防止内存问题
- 历史存储:限制为50条记录以管理内存
处理速度
- 小文本:典型文本(最多1000字符)< 1ms
- 大文本:线性时间复杂度O(n)
- 格式转换:格式更改的最小开销
优化提示
- 批量处理:一起处理多个字符
- 格式选择:为您的用例选择最高效的格式
- 输入验证:早期验证输入以避免处理错误
- 内存管理:不需要时清除大输入
浏览器兼容性
支持的浏览器
- Chrome:41+(完全支持)
- Firefox:29+(完全支持)
- Safari:10+(完全支持)
- Edge:12+(完全支持)
功能支持
- String.fromCodePoint():现代浏览器
- String.prototype.codePointAt():现代浏览器
- Unicode规范化:现代浏览器
- 代理对:所有现代浏览器
填充
对于旧浏览器,考虑填充:
// String.fromCodePoint填充
if (!String.fromCodePoint) {
String.fromCodePoint = function () {
var chars = [];
for (var i = 0; i < arguments.length; i++) {
var code = arguments[i];
if (code > 0x10ffff) {
throw new RangeError('无效的码点');
}
if (code <= 0xffff) {
chars.push(String.fromCharCode(code));
} else {
code -= 0x10000;
chars.push(
String.fromCharCode(0xd800 + (code >> 10)),
String.fromCharCode(0xdc00 + (code & 0x3ff)),
);
}
}
return chars.join('');
};
}
集成示例
Web组件
class UnicodeConverter extends HTMLElement {
connectedCallback() {
this.innerHTML = `
<input type="text" id="input" placeholder="输入文本">
<select id="format">
<option value="decimal">十进制</option>
<option value="hex">十六进制</option>
</select>
<div id="output"></div>
`;
this.querySelector('#input').addEventListener('input', (e) => {
const text = e.target.value;
const format = this.querySelector('#format').value;
const result = convertTextToUnicode(text, format);
this.querySelector('#output').textContent = result;
});
}
}
customElements.define('unicode-converter', UnicodeConverter);
Node.js模块
module.exports = {
convertTextToUnicode,
convertUnicodeToText,
isValidUnicode,
normalizeUnicode,
};