CJK / Unicode Failure Corpus
收藏官方服务:
资源简介:
一个可搜索的真实CJK、IME和Unicode/文本处理错误语料库,包含开源库中的错误:症状、最小复现、受影响的库和修复方法。
A searchable authentic corpus of CJK, IME, and Unicode/text processing errors, containing errors from open-source libraries along with their respective symptoms, minimal reproducible examples, affected libraries, and fixes.
创建时间:
2026-06-30
原始信息汇总
该数据集名为 CJK / Unicode Failure Corpus,旨在系统收集开源软件中与中日韩(CJK)文字、输入法(IME)及 Unicode 文本处理相关的真实缺陷,并提供可搜索的参考信息。
数据集概况
- 数据量:截至 2026 年 7 月 11 日,共收录 129 个已记录的缺陷,涉及 120 个开源库。
- 数据来源:其中 115 个缺陷来自维护者 greymoth 向上游项目提交的 Pull Request(截至统计时 65 个已合并);其余 14 个引用自其他贡献者提交的已有上游问题报告。
- 展示地址:https://greymoth-jp.github.io/cjk-failure-corpus
缺陷分类统计
数据集将缺陷分为 12 个类别,每个类别包含缺陷数量、占比及简要说明:
| 分类 | 简要说明 | 数量 | 占比 |
|---|---|---|---|
| IME 输入法组合 | 输入法中按 Enter 确认转换时误触发提交/选择事件 | 40 | 31% |
| 区域数据 | 缺失或错误的区域字符串;解析表丢弃区域的变音符号 | 33 | 26% |
| 代码生成转义 | 文本被内插到生成的输出(SQL、XML、Shell、HTML)中未转义 | 12 | 9% |
| 代理对与字素 | 按代码单元遍历文本导致代理对断开、ZWJ 表情和组合标记错误 | 11 | 9% |
| 假名/罗马字 | 转写表丢失或颠倒假名 | 9 | 7% |
| 宽度/规范化 | 全角半角、长音符号、假名范围边界、显示宽度与字节长度不匹配 | 9 | 7% |
| 数字 | 汉字数字(包括大字、和历元年)的解析错误 | 4 | 3% |
| 双向与控制字符 | 不可见的双向隔离符和控制字符绕过验证或导致欺骗 | 4 | 3% |
| 分词/字数统计 | 按空格分割的词语计数器和搜索分词器将整个 CJK 段落计为一个词 | 3 | 2% |
| 编码与 BOM | 字节顺序标记或非字符在一个代码路径中被剥离而在另一路径中被保留 | 2 | 2% |
| 正则往返 | 在特定位置有特殊意义的字符被未转义地重新输出,改变匹配结果 | 1 | 1% |
| Unicode 范围 | 字符类别范围漂移,导致一个规则接受而另一规则拒绝相同字母 | 1 | 1% |
注:占比四舍五入后总和为 101%。
模式分类(Taxonomy)
数据集在 taxonomy/ 目录下配套提供 15 项底层故障模式,内容记录于 taxonomy/dataset.jsonl,描述不限于当前已捕获缺陷的更广泛故障模式,来源包括 Unicode 技术报告、W3C 国际化页面、官方库文档或政府法律文本。
技术报告
详细方法、分类、研究结果及局限性记录于 paper/DRAFT.md。
配套项目
- CI 测试固件:greymoth-jp/cjk-agent-fixtures —— 将复现步骤转化为 CI 测试,自动检测回归。
- 合规基准:greymoth-jp/cjk-compliance-bench —— 检查对底层 Unicode/CSS 规范的符合性,并反馈新的候选条目。
使用与许可
- 徽章(Badge):提供静态 SVG 徽章,可直接嵌入其他仓库的 README,徽章数据自动由
data/corpus.json生成。 - 构建:使用 Node 脚本
node build.mjs生成站点,无需框架或依赖。 - 许可证:代码和模板使用 MIT 许可证;模式分类使用 CC BY 4.0。
搜集汇总
数据集介绍

构建方式
Unicode Failure Corpus 是一个专注于中、日、韩(CJK)文字处理及 Unicode 相关开源库缺陷的结构化语料库。该数据集通过系统性收集真实世界中的 GitHub Pull Request 与 Issue 构建而成,其中 129 个已记录的缺陷中 115 个由构建者直接提交,其余引用自社区报告。每个条目包含一行症状描述、最小复现步骤、受影响库及对应修复方案。数据存储于公开的 JSON 文件中,并通过自动化脚本生成网站、徽章与统计信息,确保数据源与展示内容始终保持一致。
特点
该数据集最显著的特点在于其高度的可搜索性与可验证性。所有记录均关联到真实的 GitHub 链接,构建系统会拒绝任何无法追溯的条目。缺陷被按类型精细分类,涵盖 IME 组合、区域数据、代理对与字素、编码与 BOM 等 12 个类别,其中 IME 组合输入的 Enter 键误触问题占比高达 31%,是跨多个前端框架的共性错误。此外,数据集还配套提供了 CI 测试夹具仓库与合规性基准测试,用于自动化回归检测与规范符合性验证。
使用方法
使用者可直接访问在线站点进行浏览与搜索,每条缺陷均拥有稳定 URL 便于引用与分享。若需将数据集集成到自身项目中,可通过嵌入 SVG 徽章展示已知缺陷数量与已修复比例,徽章内容随数据文件自动更新。开发者亦可直接解析 `data/corpus.json` 文件以获取结构化信息,或通过 `build.mjs` 脚本重建本地站点。配套的 CI 夹具仓库与合规性基准测试可用于将典型缺陷复现转化为自动化测试用例,从而在项目开发周期中提前拦截同类问题。
背景与挑战
背景概述
Unicode Failure Corpus 诞生于全球化软件开发日益复杂化的背景下,由开发者 greymoth 于 2026 年创建,旨在系统记录并分析开源库中与 CJK(中日韩)文字、输入法(IME)及 Unicode 文本处理相关的真实缺陷。该语料库聚焦于因缺乏对东亚语言特性的考虑而反复出现的错误,例如 IME 组合键冲突、字符编码误判及本地化数据缺失等。截至 2026 年 7 月,已收录 129 个分布于 120 个开源库的缺陷实例,每个条目均附有可复现的最小示例、受影响的库及修复方案。这一资源的构建填补了现有测试基准中缺乏针对非英语文本处理缺陷结构化数据的空白,为提升跨语言软件质量提供了可检索的参考基准,在开源生态与国际化软件开发领域产生了显著影响。
当前挑战
该语料库面临的挑战源于多重维度。在领域问题层面,最大的技术障碍是 IME 组合状态下的按键冲突——当用户按 Enter 确认日语假名-汉字转换时,同一按键事件常意外触发表单提交或选择操作,此问题在 React、Vue、Angular 等主流框架中占比高达 31%。其次是本地化数据不完整,约 26% 的缺陷表现为错误的区域字符串或解析表未能正确处理变音符号。在构建过程中,挑战在于确保每个条目的可验证性与准确性:所有记录必须关联至真实的 GitHub 拉取请求或议题,且数据通过自动化脚本从公共 API 同步并强制检验,任何无法链接到有效 URL 的条目均被拒绝。此外,维护跨类别(如代理对分割、双向文本控制字符过滤)的缺陷分类体系,并保持随上游修复动态更新的持续性,构成了数据治理与长期维护的核心难点。
常用场景
经典使用场景
Unicode Failure Corpus 是面向中、日、韩(CJK)文字处理与输入法集成领域的系统性故障知识库,汇集了来自120余个主流开源库的129个真实缺陷案例。其经典使用场景在于为开发者提供一个搜索式的参考文献,使开发者能够通过最小化复现代码、缺陷描述与修复方案,快速定位诸如IME组合输入时Enter键误触提交、假名/罗马字转写表错误、代理对切分、全半角字符宽度混淆、以及CJK数值解析失败等高频问题。该语料库特别适用于国际化组件的单元测试编写、代码审查的防御性检查清单,以及作为持续集成中回归测试的基准用例,帮助团队确保软件在东亚语言环境下的正确行为。
解决学术问题
该数据集系统性地回应了跨语言软件工程中一个长期被忽视的学术问题:为何主流Web框架与前端组件库在处理CJK文本时反复出现相同的国际化失败模式。通过实证收集并分类,它揭示了IME组合事件处理、区域数据丢失、代理对分割与正则表达式逃逸等12类核心故障模式,其中IME组合键冲突占31%且横跨React、Vue、Svelte、Angular等生态。这些发现为软件国际化测试、人机交互中的输入法兼容性、以及多语言软件缺陷模式的理论建模提供了宝贵的经验数据,研究成果不仅修正了长期存在的编码误区,更推动了event.isComposing等标准防御机制的广泛采纳,具有显著的学术与实践影响。
衍生相关工作
围绕该语料库已衍生出两类具有代表性的基础工作。其一为模式分类学(Pattern Taxonomy),从故障实例中抽象出IME组合、宽度归一化、分词等底层失效模式,每类均溯源至Unicode技术报告、W3C国际化文档或政府法规,覆盖了语料库尚未收录的复数化、阿拉伯文双向布局、字体回退等潜在故障领域。其二为配套的自动化工具链,包括cjk-agent-fixtures与cjk-compliance-bench两个仓库,前者将已知缺陷转化为持续集成的检定条件,后者提供基于标准的合规性测试,并能自动向主库投递新的候选条目,构建了从故障发现到归一化描述再到回归预防的完整方法论体系。
以上内容由遇见数据集搜集并总结生成



