Character encoding 人的所有允许字符是什么';谁的名字?

Character encoding 人的所有允许字符是什么';谁的名字?,character-encoding,character,names,Character Encoding,Character,Names,有标准的A-Z、A-Z字符,但也有连字符、em破折号、引号等 此外,还有所有的国际角色,如乌姆劳特等 那么,对于一个以英语为基础的系统,完整的集合是什么?其他语言的集合呢?UTF8、UTF16等呢 附加问题:需要多少个名称字段,它们的最大长度是多少 编辑:人名中肯定包含两种不同类型的字符,一种是作为上下文的一部分,另一种是由于结构原因。我不想限制或干扰上下文字符,但我确实需要处理结构字符 例如,我输入了一个名字,名字之间用em破折号隔开,但很难将其与减号区分开来。为了使系统更易于搜索,我希望使用

有标准的A-Z、A-Z字符,但也有连字符、em破折号、引号等

此外,还有所有的国际角色,如乌姆劳特等

那么,对于一个以英语为基础的系统,完整的集合是什么?其他语言的集合呢?UTF8、UTF16等呢

附加问题:需要多少个名称字段,它们的最大长度是多少

编辑:人名中肯定包含两种不同类型的字符,一种是作为上下文的一部分,另一种是由于结构原因。我不想限制或干扰上下文字符,但我确实需要处理结构字符

例如,我输入了一个名字,名字之间用em破折号隔开,但很难将其与减号区分开来。为了使系统更易于搜索,我希望使用所有五种不同类型的破折号,并将它们映射到一个唯一的字符(负号),这样搜索者就不需要知道最初输入的符号


破折号(可能还有引号)也存在问题,但还有多少其他符号?

UTF-8应该足够好,就名称字段而言,您至少需要一个名字和姓氏。

W3C有一篇很好的文章,很好地解释了问题(以及可能的解决方案)(这篇博文最初由Richard Ishida撰写,分为两部分:和)


我个人认为:支持每个可打印的Unicode字符,为了安全起见,只需提供一个字段“名称”它包含完整的格式化名称。这样,您可以存储几乎所有形式的名称。您可能需要更结构化的存储,但不要期望能够以结构化的形式存储每个组合,因为存在太多不同的组合。

可能出现在姓名中的白名单字符是wro如果你问我的话,还有很长的路要走。当然,[A-Za-z]是一个公平的起点,但是,正如你所说,你对“欧洲”的名字有问题。所以你绘制了所有的UMLAUT,回旋和那些。中国的名字呢?日本的?印度的?希伯来的?你正在进入一场与风力涡轮机的战斗

如果你一定要检查某人姓名的有效性,我建议你对某些字符做一个适度的黑名单。大括号、数学字符、一些标点符号等等都可以忽略。但是如果我是你,我会小心的

UTF-16应该是今天的过度杀伤力的角色集,在未来几年应该足够了


编辑:至于你关于姓名长度和姓名数量的问题。如果你真的想让人们写出真实完整的姓名,我想这两个问题的唯一简单答案是“无限”.无法为人类提供任何真实的示例,但肯定有类似的人类示例。

任何可由八位的任意倍数(大于零)表示的字符是人名的可能字符。姓名和编码的长度都是任意的,因此不应考虑上限


只需确保清理数据库输入,这样Bobby Drop表就不会出现问题。

根据您姓名结构的复杂性,我可以看到:

  • 名字
  • 中间首字母/中间名
  • 后缀(Jr.Sr.II、III、IV等)
  • 前缀(先生、女士、女士等)

  • 当你有“以前被称为王子的艺术家”时,你会怎么做?他使用的符号不是unicode集合(AFAIK)中的字符


    它有些轻浮,但同时,名称是一个相当宽泛的概念,不适合结构化格式。在这种情况下,自由形式可能最合适。

    我不认为有一个明确的答案。毕竟,有些人的名称甚至无法用UTF-16表达

    有一些奇怪的人会给他们的孩子起最疯狂的名字,包括加上奇怪的标点符号,他们自己语言中不存在的口音,等等

    但是,您可以对数据库设置任意限制。如果您愿意,您可以坚持使用7位ASCII名称。这对用户来说有点粗鲁,但他们会接受的。这当然会让搜索更容易


    我同事的女儿名叫阿米莉,但即使是一些(并非全部!)英国政府官方网站(“请输入出生证明上显示的姓名”)不接受unicode,因此他必须使用“Amelie”来代替。

    关于姓名字段的问题,错误的答案是名字、中间首字母、姓氏等,原因很多

  • 许多人都以他们的中间名为人所知,并正式使用首字母、中间名和姓氏格式

  • 在某些文化中,姓氏是第一个名字,名字是最后一个名字

  • 多个第一个和/或中间的名字越来越普遍。正如@Dour High Arch指出的,另一个极端是名字中只有一个单词的人

  • 在一个面向对象的数据库中,您将存储一个Name对象,其中包含返回目录样式或签名样式名称的方法;并且支持存储将包含支持这些方法所需的任何数据


    我还没有看到一个关系数据库模型能够改进目录样式和签名样式名称的两个可变长度字符串模型。

    这实际上取决于应用程序的用途

    当然,从理论上讲,如果你允许上帝的绿色地球上的每一个脚本都被使用是很好的,但是如果DB也被支持人员使用,他们能处理日文、希伯来文和泰文的名字吗?如果它被用来打印邮资标签,你能打印吗

    您可以添加一个e