質問

標準のA〜Z、a〜zの文字がありますが、ハイフン、emダッシュ、引用符などもあります。

さらに、ウムラウトなどのすべての国際文字があります。

では、英語ベースのシステムの場合、完全なセットは何ですか?他の言語のセットはどうですか? UTF8、UTF16などはどうですか?

ボーナスの質問:名前フィールドはいくつ必要ですか?最大長はどれくらいですか?

編集:人々の名前に関係するキャラクターには、コンテキストの一部として存在するキャラクターと、構造上の理由から存在するキャラクターの2種類があります。コンテキスト文字を制限したり干渉したりしたくありませんが、構造的な文字に対処する必要があります。

たとえば、emダッシュで区切られた名前が入っていましたが、マイナス文字と区別するのは困難でした。システムを検索しやすくするために、5種類のダッシュをすべて使用し、それらを1つの一意の文字(マイナス)にマッピングします。これにより、検索者は最初に入力された記号を特に知る必要がなくなります。

ダッシュ、おそらく引用符にも問題がありますが、他にいくつの記号がありますか?

役に立ちましたか?

解決

世界中の個人名というW3Cの良い記事があります。 >それは問題(および可能な解決策)をかなりよく説明しています(元々はRichard Ishidaによる2部構成のブログ投稿でした:パート1 およびパート2

個人的に言うと、印刷可能なすべてのUnicode文字をサポートし、安全のために単一のフィールド「名前」を提供します。完全な形式の名前が含まれています。これにより、ほぼすべての形式の名前を保存できます。より構造化されたストレージが必要な場合がありますが、異なる組み合わせが多すぎるため、すべての組み合わせを構造化された形式で保存できるとは考えないでください。

他のヒント

個人の名前に登場する可能性のあるホワイトリスト文字は、私に尋ねた場合、間違った方法です。確かに、[A-Za-z]は公正な出発点ですが、あなたが言ったように、「ヨーロッパ」で問題が発生します。名前。したがって、すべてのウムラウト、サーカムフレックス、およびそれらをマップします。中国語の名前はどうですか?日本人?インド人?ヘブライ語?風力タービンとの戦いに突入しています。

誰かの名前の正当性を絶対に確認する必要がある場合は、特定のキャラクターの控えめなブラックリストを作成することをお勧めします。中括弧、数学文字、句読点などは無視しても安全です。しかし、私があなただったら私は用心します。

入ってくるものをそのまま受け入れるのが最善かもしれません。UTF-16は今日の過剰な文字セットである必要があります。これは今後数年間は適切です。

編集:名前の長さと名前の数に関する質問について。あなたが本当に人々に本当の完全な名前を書いて欲しいなら、私はそれらの質問の両方に対する絶対確実な答えは「無限」だろうと思います。人間の実際の例を出すことはできませんが、確かにバンコク市のネイティブ名

決定的な答えがあるとは思わない。結局、一部の人々はUTF-16で表現することさえできない名前を持っています...

Prince symbol

奇妙な句読点、自分の言語にはないアクセントなど、子供たちに最もクレイジーな名前を付ける奇妙な人々がいます。

ただし、データベースに任意の制限を設定できます。必要に応じて、7ビットASCII名を主張できます。ユーザーにとっては少し失礼ですが、彼らはそれと共に生きます。確かに検索が簡単になります。

同僚の娘の名前はAmé lieです。しかし、一部の(すべてではない!)英国政府の公式Webサイト(「出生証明書に記載されているとおりに正確に名前を入力してください」)でもユニコードを受け入れないため、代わりに「Amelie」を使用する必要があります。

8ビットの任意の倍数(ゼロより大きい)で表現できる文字は、人の名前に使用できる文字です。名前とエンコーディングの両方の長さは任意であるため、上限を考慮する必要はありません。

データベース入力をサニタイズして、Bobby Drop-tablesがほとんど動かないようにしてください。

名前フィールドの問題について、 間違っている の答えは、多くの理由で名、ミドルネームのイニシャル、姓などです。

  1. 多くの人々はミドルネームで知られており、正式には最初のイニシャル、ミドルネーム、ラストネームの形式を使用しています。

  2. 一部の文化では、姓が名であり、名が姓です。

  3. 複数のファーストネームやミドルネームがより一般的になっています。 @Dour High Archが指摘するように、もう1つの極端な例は、名前に単語が1つしかない人です。

オブジェクト指向データベースでは、ディレクトリスタイルまたは署名スタイルの名前を返すメソッドを含むNameオブジェクトを保存します。バッキングストアには、これらのメソッドをサポートするために必要なデータが含まれます。

ディレクトリスタイルと署名スタイルの名前の2つの可変長文字列のモデルを改良したリレーショナルデータベースモデルはまだ見ていません。

これは、アプリの用途に依存します。

もちろん、理論上、神の緑の地球上のすべてのスクリプトを使用できるようにすることは素晴らしいことですが、DBがサポートスタッフによっても使用されている場合、日本語、ヘブライ語、タイ語のスクリプトで名前を処理できますか?郵便ラベルの印刷に使用されている場合、印刷できますか?

追加のフィールド「Latin Transcription」を追加できますが、IMOでISO-8859-1文字に制限してもかまいません-ラテン文字を使用しない人は、今では転写を使用することに慣れています彼らが筋金入りの民族主義者でない限り、彼らはもう気にしないと。

私はアメリカの自動車学校向けのソフトウェアを作っているので、私にとって最も重要なのは、州のDMVが運転免許証の適切な名前として受け入れるものです。私の場合、同じ名前を後で運転免許証に使用する必要があるため、そのような名前が合法であったとしても、DMVが許可する名前を超えて名前を許可することは問題を引き起こすでしょう。

StackOverflowから、必要な答えをまだ確認していませんでした。私の州(Calif)では、おそらくCOBOLで作成されたソフトウェアでAS400を使用していることを知りました。私の知る限り、これらは8ビット文字セットのみをサポートしています。 (それはEBCDICですか?)とにかく...うーん。

それで、私はカリフォルニアDMVと呼びました...案の定、彼らのシステムはA-Zとスペースを許可し、それ以外は絶対に許可しません。ハイフンさえ許可されていません-ハイフンはスペースに置き換えられます。実際、明らかに難しいのは、大文字のみを使用していることです。 「O'Malley」などの名前OMALLEYに置き換える必要があります。

政府に任せてください。私は、DMVで働く開発者ではないことに興奮していると言わなければなりません。 (私は本当にそのような給料を使うことができました。)

UTF-8は、名前フィールドに関しては、少なくとも名と姓が必要です。

「以前はプリンスとして知られていたアーティスト」をお持ちの場合はどうしますか。彼が使用したシンボルは、ユニコードセット(AFAIK)の文字ではありません。

ある程度の重要性はありますが、名前はかなり広い概念であり、構造化された形式にはあまり適していません。この場合、自由形式のものが最適です。

名前構造の複雑さに応じて、次のように表示されます:

  1. ミドルネームのイニシャル/ミドルネーム
  2. サフィックス(Jr. Sr. II、III、IVなど)
  3. プレフィックス(Mr.、Mrs.、Ms。など)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top