2

通常在写作中使用的 Unicode 字符的子集是什么——例如通常在报纸文章中发现的那些?

例如,在英语中,[a-zA-Z0-9] 范围内的字符,加上一些标点字符,对于大多数写作来说就足够了。

但我想支持使用超出 ASCII 范围的字符的语言,同时排除非打印或装饰字符。

目标是将用户对应用程序的输入限制为以书面语言合法使用的代码点。因为用户输入将被保存和显示,我不想让恶作剧者输入完全由诸如变音符号、Unicode 组合字符、Unicode 流控制字符等内容组成的文本。

遗憾的是,我并不精通 Unicode 中的每一种语言。是否有人编制了通常用于书写的所有 Unicode 字符子集的列表?

4

3 回答 3

3

Unicode 代码点的官方列表是UnicodeData.txt. 这是一个纯文本文件,每个代码点一行;它很容易机器可读。例如:

0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;

第三个分号分隔的字段是“General Category”的缩写名称。这将在 Unicode 标准的第 4 章,特别是第 4.5 节中进一步解释;请参见第 131 页的表格(PDF 文件的第 12 页)。例如,“Lu”是大写字母,“Ll”是小写字母,Pc、Pd、Ps是各种标点符号。(两字母缩写的第一个字母代表字母、数字、标点符号等更高级的类别)

请注意,某些代码点范围未明确列出。例如,CJK(中文、日文、韩文)表意文字的范围表示为:

4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
9FCC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;

我认为 unicode.org 上还有其他文件可以填补这些空白。

我仍然不是 100% 清楚您要定义的子集,但您可以将其定义为一组特定的通用类别值。

于 2012-07-22T06:42:24.903 回答
2

我不想让恶作剧者输入完全由变音符号、Unicode 组合字符等内容组成的文本

变音符号/组合字符将用于正常的书面语言。因此,如果您想阻止“恶作剧者”,您将需要一些更复杂的东西,而不仅仅是允许的字符列表。您必须对您想要允许的每种语言进行某种语言分析。

我建议不要为此烦恼,因为这会很困难,而且无论如何您都不会成功。只是让人们写他们想要的东西。

于 2012-07-23T21:16:03.733 回答
1

尝试 WGL4(652 个字符)、MES-1(335 个字符)或 MES-2(1062 个字符)。在维基百科上找到这些。如果您想使用此集合,您可能希望从 MES-1 中排除字符 IJijĸĿŀʼn˚―⅛⅜⅝⅞♪。

编辑:我意识到这是一个糟糕的答案。尤其是从 MES-1 部分删除字符完全是垃圾。我不应该发布这个。我为谁赞成这个而感到羞耻。

如果有的话,请使用 Subset1(678 个字符)、Subset2(1193 个字符)和 Subset3(2823 个字符)。https://unicodesubsets.miraheze.org/wiki/User:PiotrGrochowski

于 2016-03-25T19:36:59.340 回答