Подтвердить что ты не робот

Каковы все допустимые символы для имен людей?

Существуют стандартные символы A-Z, a-z, но также есть дефисы, em-тире, кавычки и т.д.

Кроме того, есть все международные символы, такие как умлауты и т.д.

Итак, для английской системы, какой комплект? Что относительно наборов для других языков? Что относительно UTF8, UTF16 и т.д.?

Бонусный вопрос: сколько полей имени необходимо и каковы их максимальные длины?

РЕДАКТИРОВАТЬ: В именах людей определенно два разных типа персонажей, те, которые присутствуют как часть контекста, и те, которые существуют по структурным причинам. Я не хочу ограничивать или вмешиваться в контекстные символы, но мне нужно иметь дело со структурными.

Например, у меня появилось имя, разделенное символом em, но было трудно отличить его от минус-символа. Чтобы сделать систему более удобной для поиска, я хочу взять все пять различных типов тире и сопоставить их с одним уникальным символом (минус), таким образом поисковик не должен знать конкретно, какой символ был первоначально введен.

Проблема существует для тире, возможно, кавычки, но также и сколько других символов?

4b9b3361

Ответ 1

Хорошая статья W3C называется Личные имена по всему миру, которые хорошо объясняют проблемы (и возможные решения) (изначально это было двухчастное сообщение в блоге Ричарда Ишиды: часть 1 и часть 2)

Лично я бы сказал: поддерживайте каждый печатный Unicode-Character и, чтобы быть в безопасности, предоставляйте только одно "имя" поля, содержащее полное форматированное имя. Таким образом, вы можете хранить почти все формы имени. Возможно, вам понадобится более структурированное хранилище, но тогда вы не сможете хранить каждую отдельную комбинацию в структурированной форме, поскольку просто слишком много разных.

Ответ 2

Белые символы, которые могут появляться в имени человека, являются неправильным способом, если вы спросите меня. Конечно, [A-Za-z] - справедливая отправная точка, но, как вы сказали, у вас проблемы с "европейскими" именами. Таким образом, вы отображаете все умлауты, обводки и те. Как насчет китайских имен? Японский? Индийский? Иврит? Вы вступаете в битву с ветряными турбинами.

Если вы абсолютно должны проверить правильность имени кого-то, я предлагаю сделать скромный черный список определенных символов. Скобки, математические символы, некоторые знаки препинания и такие могут быть безопасны для игнорирования. Но я был бы осторожен, если бы был вами.

Лучше всего просто принять все, что приходит. UTF-16 должен быть сегодня набором символов overkill, который должен быть адекватным на несколько лет вперед.

Изменить:. Что касается вашего вопроса о длине имени и количестве имен. Если вы действительно хотите, чтобы люди писали свои настоящие и полные имена, я думаю, единственный надежный ответ на оба этих вопроса будет "бесконечным". Не имея возможности вытолкнуть какие-либо реальные примеры для людей, но, безусловно, есть аналогичные примеры для людей как родное название для города Бангкок.

Ответ 3

Я не думаю, что есть окончательный ответ. В конце концов, у некоторых людей есть имена, которые даже не могут быть выражены в UTF-16...

Prince symbol

Есть некоторые странные люди, которые подарят своим детям самые сумасшедшие имена, в том числе вводят странную пунктуацию, акценты, которые не существуют на их родном языке и т.д.

Однако вы можете разместить произвольные ограничения в своей базе данных. Если вы хотите, вы можете настаивать на 7-битных именах ASCII. Это немного грубо для пользователей, но они будут жить с ним. Это, безусловно, облегчает поиск.

Моя дочь коллеги называется Амели. Но даже некоторые (не все!) Официальные веб-сайты британского правительства ( "Пожалуйста, введите имя точно так, как указано в свидетельстве о рождении" ) не будут принимать юникод, поэтому он должен использовать вместо него "Амели".

Ответ 4

В вопросе полей имен НЕПРАВИЛЬНЫЙ ответ - это имя, средняя начальная, фамилия и т.д. по многим причинам.

  • Многие люди известны своим средним именем и формально используют первое начальное, среднее имя, формат фамилии.

  • В некоторых культурах фамилия является первым именем, и данное имя является фамилией.

  • Несколько первых и/или средних заданных имен становятся все более распространенными. Как указывает @Dour High Arch, другая крайность - это люди с одним словом от их имени.

В объектно-ориентированной базе данных вы должны сохранить объект Name с методами для возврата имени стиля каталога или имени подписи; и хранилище резервных копий будет содержать любые данные, необходимые для поддержки этих методов.

Я еще не видел модель реляционной базы данных, которая улучшает модель двух строк переменной длины для имен стиля каталога и имени подписи.

Ответ 5

Это действительно зависит от того, для чего должно использоваться приложение.

Конечно, теоретически это здорово, если вы разрешаете использовать все script на зеленой земле бога, но если БД также используется персоналом службы поддержки, они будут иметь возможность обрабатывать имена на японском, иврите и тайском языке script? Можете ли вы использовать принтер, если он используется для печати почтовых этикеток?

Вы можете добавить дополнительное поле "Латинская транскрипция", но IMO действительно в порядке, чтобы ограничить его символами ISO-8859-1. Люди, которые не используют латинские символы, теперь настолько привыкли к использованию транскрипции, что они не возражают против этого, если только они не хардкорные националисты.

Ответ 6

Любой символ, который может быть представлен любым кратным восьми бит (больше нуля), является возможным символом для имени человека. Длины обоих имен и кодировок произвольны, поэтому верхняя граница не должна рассматриваться.

Просто убедитесь, что вы дезинфицируете свои входы в базу данных, поэтому маленькие столы Bobby не получают ya.

Ответ 7

Я делаю программное обеспечение для автошколов в США, поэтому для меня самое главное, что государство DMV принимает как собственное имя в водительских правах. В моем случае это может вызвать проблемы, позволяющие именам, превышающим то, что позволяет DMV, даже если такие имена являются законными, потому что одно и то же имя впоследствии должно использоваться для лицензии драйвера.

Из StackOverflow я все еще не подтвердил ответ, который мне нужен. И я знаю, что в моем штате (Калифорния) они используют AS400 с программным обеспечением, вероятно, написанным в COBOL, и, насколько мне известно, те поддерживают только 8-битный набор символов. (Это EBCDIC?) Во всяком случае... Ugh.

Итак, я позвонил в Калифорнийский DMV... Конечно же, их система позволяет A-Z и пространства и абсолютно ничего. Даже дефисы не допускаются - дефисы заменяются пробелами. На самом деле, по-видимому, просто трудно, они используют только столицы. И имена, такие как "O'Malley", должны быть заменены на OMALLEY.

Оставьте это правительству. Должен сказать, я очень рад, что не работал разработчиком DMV. (Хотя я действительно мог бы использовать такую ​​зарплату.)

Ответ 8

UTF-8 должен быть достаточно хорош, поскольку в полях имен вам нужно как минимум первое имя и последнее.

Ответ 9

Что вы делаете, когда у вас есть "Художник, ранее известный как принц". Этот символ, который он использовал, не является символом в наборе юникодов (AFAIK).

Это некоторая легкомыслие, но в то же время имена - довольно широкая концепция, которая не подходит для структурированного формата. В этом случае наиболее подходящей может быть какая-то свободная форма.

Ответ 10

В зависимости от сложности вашей структуры имен я мог видеть:

  • Имя
  • Среднее начальное/среднее имя
  • Фамилия
  • Суффикс (младший старший, II, III, IV и т.д.)
  • Префикс (г-н, г-жа, г-жа и т.д.)