Какие символы допустимы в именах людей?[закрыто]

StackOverflow https://stackoverflow.com/questions/421046

Вопрос

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Символ принца

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

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

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

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

Просто убедитесь, что вы дезинфицируете входные данные своей базы данных, чтобы маленькие дроп-таблицы Бобби не получили вас.

Что касается полей имен, ответом НЕПРАВИЛЬНО является имя, отчество, фамилия и т. д. по многим причинам.

<Ол>
  • Многие люди известны по их отчеству и формально используют первый инициал, отчество, формат фамилии.

  • В некоторых культурах фамилия - это имя, а имя - фамилия.

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

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

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

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

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

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

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

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

    Итак, я позвонил в DMV Калифорнии...Конечно же, их система допускает A-Z и пробелы и ничего больше.Даже дефисы не допускаются. Дефисы заменяются пробелами.На самом деле, видимо, просто для усложнения, они используют только заглавные буквы.И такие имена, как «О'Мэлли», необходимо заменить на ОМАЛЛИ.

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

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

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

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

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

    <Ол>
  • Имя
  • Отчество и отчество
  • Фамилия
  • Суффикс (мл. старший II, III, IV и т. д.)
  • Префикс (г-н, миссис, мисс и т. д.)
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top