w

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)
  • 格式转换:格式更改的最小开销

优化提示

  1. 批量处理:一起处理多个字符
  2. 格式选择:为您的用例选择最高效的格式
  3. 输入验证:早期验证输入以避免处理错误
  4. 内存管理:不需要时清除大输入

浏览器兼容性

支持的浏览器

  • 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,
};
这个页面对您有帮助吗?