CJK / Unicode Failure Corpus
收藏官方服务:
资源简介:
一个可搜索的真实CJK、IME和Unicode/文本处理错误语料库,收录了开源库中的错误案例,包括症状、重现方法、受影响的库和修复方案。
A searchable real-world corpus of CJK, IME, and Unicode/text processing error cases that compiles error cases from open-source libraries, with each case including its symptoms, reproduction steps, affected libraries, and corrective fixes.
创建时间:
2026-06-30
原始信息汇总
数据集概述
该数据集是一个专注于中、日、韩(CJK)及Unicode文本处理相关bug的公开语料库,旨在记录和分类开源软件中真实存在的国际化与本地化缺陷。
核心内容
- 当前规模: 截至2026年7月4日,共收录 97个已确认的bug,分布于 91个开源库 中。
- 数据来源: 83个条目来自数据维护者(greymoth)在对应项目上提交的Pull Request,其余14个条目引用其他贡献者的公开Issue或PR。
- 更新机制: 数据内容基于公开的GitHub API生成,每个条目都链接受影响的真实PR或Issue,确保可验证性。
Bug分类与统计
Bug按照根本原因分为11个类别,以下是各类别的数量及占比:
| 分类 | 问题描述 | 数量 | 占比 |
|---|---|---|---|
| IME 输入法合成 | 用户在IME转换过程中按回车键确认时,意外触发表单提交或选项选择 | 38 | 39% |
| 区域数据 | 缺失或错误的日语区域字符串;解析表丢弃区域特有的变音符号 | 25 | 26% |
| 代理对与字素 | 按代码单元处理文本,导致拆分代理对、ZWJ Emoji及组合用变音符号 | 11 | 11% |
| 假名/罗马字 | 音译表遗漏或颠倒假名 | 8 | 8% |
| 宽度/规范化 | 全半角转换、长音符号处理、假名范围边界问题 | 6 | 6% |
| 数字 | 汉字数字及法律、金融文本中使用的“大字”形式 | 2 | 2% |
| 代码生成转义 | 未经转义的文本被直接插入到生成的输出中 | 2 | 2% |
| 分词/字数统计 | 以空格分割的计数器将整个CJK段落视为一个词 | 2 | 2% |
| 正则表达式往返 | 包含特殊字符的文本未经转义重新输出,导致匹配错误 | 1 | 1% |
| Unicode范围 | 字符类范围漂移,导致一个规则接受的字母被另一个规则拒绝 | 1 | 1% |
| 编码与BOM | 字节顺序标记(BOM)在一个路径中被剥离,却在另一个路径中被保留 | 1 | 1% |
注:占比四舍五入后总和为99%。
最普遍的Bug
IME输入法合成问题 是最常见的失败模式,在所有bug中占比39%。这类bug出现在React、Vue、Svelte、Angular以及无头组件库中。修复方式通常是在事件处理中加入一条判断:event.isComposing(或 keyCode 229;在React中为 event.nativeEvent.isComposing)。
附加资源
- CI测试用例: 所有bug的复现步骤已被转换为CI测试用例,存放在配套仓库 greymoth-jp/cjk-agent-fixtures 中,用于自动捕获回归。
- 模式分类法: 目录
taxonomy/提供了更底层的失败模式文档,共15个条目。每个模式均引用自Unicode技术报告、W3C国际化页面、官方库文档或政府法律文本等权威来源。 - 技术报告: 语料库背后的方法论、分类、发现和局限性说明,详见 paper/DRAFT.md。
许可协议
- 代码与模板: MIT许可(参见 LICENSE)。
- 模式分类法 (taxonomy/): CC BY 4.0许可(参见 taxonomy/LICENSE)。
搜集汇总
数据集介绍

构建方式
Unicode Failure Corpus 是一个专门收录开源软件中与中日韩(CJK)文字、输入法编辑器(IME)及 Unicode 文本处理相关缺陷的可检索参考数据集。其构建方式极具系统性与可验证性:数据集中的绝大多数条目(97个缺陷中的83个)源自维护者 greymoth 直接向目标上游项目提交的拉取请求(Pull Request),其中33个已被合并;其余14个则引用了其他贡献者已在项目中报告的问题或合并请求。所有条目的标题、仓库地址、URL 及合并状态均通过 GitHub API 获取,而非手动编写,构建系统会严格拒绝任何无法关联至真实 GitHub 链接的条目,从而确保了每一处缺陷均可溯源、每一个修复均有据可查。此外,每个缺陷条目均包含一行症状描述、最小可复现示例、受影响库及修复方案,数据以标准化 JSON 格式存放于 data/corpus.json 中。
特点
该数据集最鲜明的特点在于其聚焦的精准性与分类的系统性。所有缺陷集中反映了同一类核心问题——即在主要面向英语设计的库中,对于 CJK 文本及 IME 交互的忽视所导致的反复出现的错误模式。数据集将97个缺陷精细划分为11个类别,其中“IME 组合输入”类别占比高达39%,涵盖了从 React、Vue 到 Svelte、Angular 等主流前端框架及无头组件库中共通的 Enter 键冲突问题。此外,数据集还配备了模式分类学(taxonomy)层,将具体缺陷抽象为底层的失败模式,并关联到 Unicode 技术报告、W3C 国际化文档等权威源头,即便尚未捕获到真实拉取请求的故障模式也被纳入,展现了从实例到原理的完整知识链条。缺陷的可复现场景同时被转化为 CI 测试用例,用于自动化回归检测。
使用方法
使用者可通过两种途径访问和利用该数据集。最直接的方式是访问其线上检索页面(Live),该页面基于 data/corpus.json 数据由单一 Node.js 脚本生成纯静态 HTML,支持无 JavaScript 环境下的搜索与过滤,每个缺陷条目均拥有稳定的独立 URL,便于引用和搜索引擎索引。对于希望深度使用数据的开发者或研究者,可直接操作 data/corpus.json 文件:通过向 entries 数组添加包含完整字段的对象即可扩展数据集,随后运行 node build.mjs 命令即可重新生成整个站点及 sitemap.xml 和 robots.txt。编译过程会在字段缺失或链接无效时中断,确保数据完整性。同时,配套的 cjk-agent-fixtures 仓库将数据集中最小可复现示例转化为 CI 测试固件,使用者可将其集成至自己的项目流水线中,实现对同类缺陷的持续监控与自动回归捕获。
背景与挑战
背景概述
Unicode Failure Corpus是由研究者greymoth于2026年创建并维护的一个系统性记录CJK(中日韩)文本、输入法(IME)及Unicode处理缺陷的可搜索语料库。该数据集聚焦于开源库中对非英语文本支持不足这一长期被忽视的核心研究问题,旨在揭示全球化软件开发中因语言特性差异而反复出现的结构性错误。研究团队通过收集97个真实缺陷(涵盖91个开源库),构建了包含IME组合键冲突、区域数据缺失、代理对分割等类别的分类体系。该语料库对国际化软件开发领域具有深远影响,不仅提供了可复现的缺陷实例,还建立了自动化回归测试框架,推动开发者关注多语言环境下的健壮性设计。
当前挑战
该数据集面临的挑战主要涵盖两大维度:首先是领域问题的复杂性,IME组合键冲突(占39%)揭示了东亚语言输入流程与Web事件模型之间的根本性矛盾——用户确认文字转换的Enter键常被误触为表单提交,这一问题横跨React、Vue、Svelte等主流框架而未被系统性解决。其次,构建过程中面临精确性与可验证性的平衡难题,研究者需确保每个缺陷条目均关联至真实的GitHub合并请求或issue,通过API验证URL有效性,并维持91个库的跨项目追踪,这要求持续监控开源社区的更新动态。此外,分类体系需应对Unicode标准的持续演进,例如代理对、ZWJ表情符号等新兴边缘情况不断涌现,迫使语料库的类别划分保持可扩展性。
常用场景
经典使用场景
在东亚语言处理与国际化软件测试领域,Unicode Failure Corpus 被广泛用作系统性验证开源库对CJK(中日韩)文本支持完整性的基准测试集。研究者通常将其97个真实缺陷用例作为测试套件,评估组件库、文本处理工具及前端框架在IME输入法组合、代理对分割、区域数据解析等关键场景下的鲁棒性。该语料库特别适合检测那些在英语环境下表现正常、却在日语键盘操作或韩文音节处理中暴露的隐蔽缺陷,从而成为国际化和本地化(i18n/l10n)质量保障的标准参考。
实际应用
在实际产业应用中,该数据集已直接嵌入多个开源项目的CI流水线,通过配套的cjk-agent-fixtures仓库实现回归缺陷的自动检测。前端开发者可借助其精炼的修复范式(如event.isComposing属性检查),快速排查React、Vue、Svelte等框架中的输入法提交冲突。针对金融法律文本的场景,其中关于大字数字解析的缺陷案例(如契約書中的壱弐参)直接指导了财务系统的本地化测试策略。此外,其构建脚本和静态站点模板为团队建立自有国际化缺陷库提供了可复制的技术架构。
衍生相关工作
该语料库催生了多项延伸性研究工作,其配套的taxonomy/目录将97个具体缺陷抽象为15个底层故障模式,每个模式均关联Unicode技术报告、W3C国际化规范等权威来源。这一分类体系已被后续研究用于构建CJK文本处理的防御性编程指南,尤其在代理对与结合字符序列处理、古语数字解析等细分领域产生了系列改进提案。受其CI集成思路启发,多个国际化测试框架开始将IME组合键冲突检测作为标准插件,而关于locale数据解析的25个缺陷案例则直接推动了ECMA-402标准中区域数据完备性检查工具的研发。
以上内容由遇见数据集搜集并总结生成




