就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
8年前关闭。
有标准的 A-Z、a-z 字符,但也有连字符、破折号、引号等。
另外,还有所有的国际字符,比如变音符号等。
那么,对于一个以英文为基础的系统,完整的一套是什么?其他语言的集合呢? UTF8、UTF16 等呢?
额外问题:需要多少个名称字段,它们的最大长度是多少?
编辑:人名中肯定有两种不同类型的字符,一种是作为上下文的一部分,另一种是由于结构原因而存在的。我不想限制或干扰上下文字符,但我确实需要处理结构字符。
例如,我输入了一个由破折号分隔的名称,但很难将其与减号区分开来。为了使系统更易于搜索,我想采用所有五种不同类型的破折号,并将它们映射到一个唯一的字符(减号)上,这样搜索者就不需要特别知道最初输入的是哪个符号。
问题存在于破折号,可能还有引号,还有多少其他符号?
最佳答案
W3C 有一篇名为 Personal names around the world 的好文章这很好地解释了问题(和可能的解决方案)(它最初是 Richard Ishida 的两部分博客文章:part 1 和 part 2)
我个人会说:支持每个可打印的 Unicode 字符,并且为了安全起见,只提供一个包含完整格式化名称的字段“名称”。通过这种方式,您可以存储几乎所有形式的名称。您可能需要更结构化的存储,但不要期望能够以结构化形式存储每个组合,因为有太多不同的组合。
关于character-encoding - 人名的所有允许字符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421046/