문제

표준 A-Z, a-z 문자가 있지만 하이픈, 엠 대시, 따옴표 등도 있습니다.

게다가 움라우트 등의 국제 문자도 모두 있습니다.

그렇다면 영어 기반 시스템의 경우 전체 세트는 무엇입니까?다른 언어에 대한 세트는 어떻습니까?UTF8, UTF16 등은 어떻습니까?

보너스 질문:필요한 이름 필드 수는 몇 개이며, 최대 길이는 얼마입니까?

편집하다: 사람의 이름에는 분명히 두 가지 유형의 문자가 있습니다. 즉, 맥락의 일부로 존재하는 문자와 구조적 이유로 존재하는 문자입니다.나는 문맥 문자를 제한하거나 방해하고 싶지 않지만 구조적인 문자는 처리해야 합니다.

예를 들어, 엠 대시로 구분된 이름이 들어왔는데 마이너스 문자와 구별하기가 어려웠습니다.시스템 검색을 더 쉽게 만들기 위해 다섯 가지 유형의 대시를 모두 가져와 하나의 고유 문자(빼기)에 매핑하려고 합니다. 이렇게 하면 검색자가 처음에 어떤 기호가 입력되었는지 구체적으로 알 필요가 없습니다.

대시, 아마도 따옴표에도 문제가 있지만 다른 기호는 몇 개나 있습니까?

도움이 되었습니까?

해결책

W3C의 좋은 기사가 있습니다 전 세계의 개인 이름 그것은 문제 (및 가능한 솔루션)를 잘 설명합니다 (원래 Richard Ishida의 두 부분으로 된 블로그 게시물이었습니다. 1 부 그리고 2 부)

개인적으로 말하기 : 모든 인쇄 가능한 유니 코드 문자를 지원하고 안전하기 위해 전체 형식의 이름을 포함하는 단일 필드 "이름"만 제공하십시오. 이렇게하면 거의 모든 형태의 이름을 저장할 수 있습니다. 보다 구조화 된 스토리지가 필요할 수도 있지만 너무 많은 다른 것들이 있기 때문에 모든 단일 조합을 구조화 된 형태로 저장할 수있을 것으로 기대하지는 않습니다.

다른 팁

사람의 이름으로 나타날 수있는 화이트리스트 캐릭터는 나에게 물어 보면 잘못된 방법입니다. 물론, [a-za-z]는 공정한 출발점이지만, 당신이 말했듯이, 당신은 "유럽"이름에 문제가 있습니다. 그래서 당신은 모든 umlaut, circleflexes 및 그것들을 매핑합니다. 중국 이름은 어떻습니까? 일본어? 인도 사람? 헤브라이 사람? 당신은 풍력 터빈과의 전투에 들어갑니다.

만약 너라면 절대적으로 누군가의 이름의 유효성을 확인하십시오. 특정 캐릭터의 겸손한 블랙리스트를하는 것이 좋습니다. 교정기, 수학적 문자, 일부 구두점 등은 무시하기에 안전 할 수 있습니다. 하지만 내가 당신이라면 조심할 것입니다.

UTF-16은 오늘날의 과잉 캐릭터 세트 여야합니다. 앞으로 몇 년 동안 적절해야합니다.

편집하다: 이름 길이와 이름의 양에 대한 질문은. 사람들이 실제로 자신의 실제 이름과 완전한 이름을 쓰기를 원한다면,이 두 질문 모두에 대한 유일한 대답은 "무한"일 것이라고 생각합니다. 인간을위한 실제 사례를 꺼낼 수는 없지만 인간을위한 유사한 사례가 있습니다. 방콕시의 기본 이름.

나는 결정적인 대답이 있다고 생각하지 않습니다. 결국, 어떤 사람들은 UTF-16에서도 표현할 수없는 이름을 가지고 있습니다 ...

Prince symbol

이상한 구두점, 자신의 언어로 존재하지 않는 악센트 등을 포함하여 아이들에게 가장 미친 이름을 부여하는 이상한 사람들이 있습니다.

그러나 데이터베이스에 임의의 제한을 배치 할 수 있습니다. 원한다면 7 비트 ASCII 이름을 고집 할 수 있습니다. 사용자에게는 약간 무례하지만 그들은 함께 살 것입니다. 확실히 검색이 더 쉬워집니다.

내 동료의 딸은 Amélie입니다. 그러나 일부 (전부는 아님) 공식 영국 정부 웹 사이트 ( "출생 증명서에 표시된대로 정확히 이름을 입력하십시오")는 유니 코드를 수락하지 않으므로 대신 'Amelie'를 사용해야합니다.

8 비트 (0보다 큰)의 배수로 표현할 수있는 모든 캐릭터는 사람의 이름에 가능한 캐릭터입니다. 이름과 인코딩의 길이는 임의적이므로 상한을 고려해서는 안됩니다.

Bobby 드롭 테이블이 나에게 얻지 못하도록 데이터베이스 입력을 소독하십시오.

이름 필드 문제에 대해 잘못된 답은 여러 가지 이유로 이름, 중간 이니셜, 성 등입니다.

  1. 많은 사람들이 자신의 중간 이름으로 알려져 있으며 공식적으로 첫 번째 초기 이름, 성 형식을 사용합니다.

  2. 일부 문화에서는 성이 이름이며 주어진 이름은 성입니다.

  3. 다중 첫 번째 및/또는 중간 이름이 더 일반적입니다. @Dour High Arch가 지적했듯이, 다른 극단은 이름으로 한 단어 만있는 사람들입니다.

객체 지향 데이터베이스에서 디렉토리 스타일 또는 서명 스타일 이름을 반환하는 메소드가있는 이름 객체를 저장합니다. 그리고 백업 스토어에는 해당 방법을 지원하는 데 필요한 데이터가 포함되어 있습니다.

디렉토리 스타일 및 서명 스타일 이름을위한 두 가지 변수 길이 스트링 모델을 향상시키는 관계형 데이터베이스 모델을 아직 보지 못했습니다.

실제로 앱의 용도에 따라 다릅니다.

물론 이론상으로는 신의 푸른 땅에 있는 모든 문자를 사용할 수 있도록 허용하면 좋지만, 지원 스태프도 DB를 사용한다면 일본어, 히브리어, 태국어 문자의 이름을 처리할 수 있을까요?우표 라벨을 인쇄하는 데 사용되는 경우 프린터를 사용할 수 있습니까?

추가 필드 "라틴어 표기"를 추가할 수 있지만 IMO에서는 이를 ISO-8859-1 문자로 제한해도 괜찮습니다. 라틴 문자를 사용하지 않는 사람들은 이제 라틴 문자를 사용하지 않는 표기를 사용해야 하는 데 너무 익숙해졌습니다. 그들이 강경 민족주의자가 아니라면 더 이상 신경 쓰지 마세요.

나는 미국에서 학교를 운전하기위한 소프트웨어를 만들고 있습니다. 그래서 주정부 DMV가 운전 면허증에서 적절한 이름으로 받아들이는 것과 가장 중요한 것은 나에게 중요합니다. 제 경우에는 동일한 이름이 운전 면허증에 사용되어야하기 때문에 그러한 이름이 합법적이더라도 DMV가 허용하는 것 이상의 이름을 허용하는 문제가 발생합니다.

StackoverFlow에서 나는 여전히 필요한 답변을 확인하지 않았습니다. 그리고 나는 내 주 (캘리포니아)에서 그들이 COBOL로 작성된 소프트웨어와 함께 AS400을 사용하고 있으며, 내가 아는 한, 8 비트 문자 세트 만 지원한다는 것을 알고 있습니다. 어쨌든 ... UGH.

그래서 나는 캘리포니아 DMV를 불렀습니다. 확실히 그들의 시스템은 AZ와 공간을 허용하며 전혀 다른 것은 없습니다. 하이픈조차 허용되지 않습니다. 하이픈은 공간으로 교체됩니다. 사실, 단지 어려운 것은 분명히 자본 만 사용합니다. "O'Malley"와 같은 이름은 Omalley로 대체되어야합니다.

정부에 맡기십시오. 나는 DMV에서 일하는 개발자가되지 않도록 기뻐한다고 말해야합니다. (실제로 그런 종류의 급여를 사용할 수는 있지만)

UTF-8은 이름 필드까지 충분해야합니다. 최소한 이름과 마지막으로 원할 것입니다.

"이전에 왕자로 알려진 아티스트"가있을 때 무엇을합니까? 그가 사용한 그 상징은 유니 코드 세트 (AFAIK)의 캐릭터가 아닙니다.

그것은 약간의 부적이지만 동시에 이름은 구조화 된 형식에 잘 어울리지 않는 다소 광범위한 개념입니다. 이 경우 자유 형식이 가장 적합 할 수 있습니다.

이름 구조의 복잡성에 따라 볼 수 있습니다.

  1. 이름
  2. 중간 초기/중간 이름
  3. 접미사 (Jr. Sr. II, III, IV 등)
  4. 접두사 (Mr., Mrs., Ms. 등)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top