Nodejs 字符编码的坑很多,一个简陋的 Unicode 强迫症可视化工具

发布于 1周前 作者 nodeper 来自 nodejs/Nestjs

Nodejs 字符编码的坑很多,一个简陋的 Unicode 强迫症可视化工具

不知道叫什么名好,用丑陋的 web UI 做的这个工具,估且叫《 Unicode 强迫症可视化》

字符编码的坑很多。(太多了,具体看 readme 里写了一堆): https://github.com/garywill/cc-visualize

Screenshot

unihan 的坑也有,像之前的什么“入职”字的事:

汉字本身的繁简异体关系也多

Screenshot

有谁踩了坑了呢? rime 和 fcitx 这两个开源输入法的 table 中就有坑: https://github.com/garywill/cc-visualize/discussions

那些搜狗、苹果之类的输入法里肯定也有。自己尝试把同形汉字字符输入搜索引擎,可以发现中文网络上的内容已经含有那些坑在里面了


8 回复

不错,赞一个


顶, 有没有那种看起来是汉字实际不是的那种编码呢?

之前有个人离职, 接手他的代码, 有好多字虽然看着正常, 但是特么根本搜不到.

就比如: ⼯作模式(工), 累计⾥程(里)…看起来正常, 但是在 IDE 中搜不到, 看了下提交记录, 显示的是个方框里面一个符号 :P

不错,前些时帮人弄 pdf 检索工具,提取文本,那些个 pdf 有法语的文档,有德语的,有混合希腊字母的,还有 ASCII 码编码的特殊字符,也有 Unicode 编码的特殊字符,本来以为是一个 Python 脚本就能搞定的小 Case ,后来可把我坑惨了。

应该已经涵盖了你说的那些的。下次你放进去试试,把所有选项勾上

这个工具很有用,正常文字混用康熙部首实在很不应该,因为会导致文本搜索功能无效化

某些输入法害人害惨了,我猜测那个读论文系列的作者肯定也是用了这类有坑的输入法,他发的每篇博文几乎都有康熙部首混进去代替正常文字

找到了,那个一分钟读论文系列,随便找两个:
/t/911818
/t/912321
只要用 Windows 就能看得出明显不同,比如搜索“生产力”,是无法匹配标题的,因为标题就用了康熙部首

看起来很有用, 赞一个

在Node.js中处理字符编码确实可能遇到一些坑,特别是当涉及到Unicode字符时。为了帮助你创建一个简陋的Unicode强迫症可视化工具,我们可以使用Node.js的内置模块来处理字符编码,并展示字符的Unicode码点和对应的字符。

以下是一个简单的示例代码,它读取一个字符串并输出每个字符的Unicode码点和字符本身:

const fs = require('fs');
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('请输入一个字符串: ', (input) => {
  for (let char of input) {
    const codePoint = char.codePointAt(0).toString(16).toUpperCase().padStart(4, '0');
    console.log(`${codePoint} - ${char}`);
  }
  rl.close();
});

这个脚本使用readline模块从标准输入读取一个字符串,然后遍历字符串中的每个字符,使用codePointAt(0)方法获取字符的Unicode码点,并将其转换为十六进制格式。padStart(4, '0')确保每个码点都是四个字符长,以便于阅读。

请注意,这个工具是简陋的,它只处理基本的Unicode字符。对于更复杂的Unicode处理(如代理对、组合字符等),你可能需要使用更高级的库,如punycodeiconv-lite

希望这个示例能帮助你理解如何在Node.js中处理字符编码,并创建一个简单的Unicode可视化工具。

回到顶部