web-dev-qa-db-ja.com

IDで避ける必要がある文字/数字はありますか?

たとえば、ファイルの5桁のIDを提供する画像アップロードサイト(domain.com/aCd5y)

最終的なIDに文字や数字を使用しないでください。これにより、人々はリンクを(コピーアンドペーストせずに)読みやすく、共有しやすくなりますか?

I、I、l、1は避けますか? Oまたは0はどうですか? ChromeのURLバーでは、0には線が引かれておらず、I(大文字のi)とl(小文字のL)は異なって見えますが、他のブラウザー、デバイス、画面などについてはわかりません。この投稿の例では、大文字のIと小文字のLは同じに見えます。

45
cantsay

あなたが参照しているものはあいまいな文字と呼ばれています。

これらの文字のリストは、この PwgenのCコードファイル から取得できます。

Cコードの読み取りに慣れていない場合、文字と対応する紛らわしい数字(および文字)は次のようになります。

B = 8
G = 6
I = 1 = l (lowercase L)
O = 0
Q = D
S = 5 
Z = 2

以上のことから、混乱を比較的少なくするのに役立つテキストの読みやすさを向上させるフォントを選択することを強くお勧めします。正しいフォントを選択するための要因には、

  1. 固定幅:乱数/文字を選択する場合、フォントを移動してもカーニングが変化しないため、固定幅は非常に役立ちます。

  2. 個別の0/Oルックのフォントを使用してください-それらは間違いなく人を台無しにします。類似する他の文字/数字の組み合わせを探します。このため、潜在的には、0/Oをミックスから除外します。

  3. 微妙なセリフと太さの変更があるフォントを選択します

これが フォントの信頼性について確認する価値のある記事 です。

また、この Xクーポンコードに関する興味深い記事 を読むことをお勧めします。これには、あいまいさを取り除く方法に関するいくつかの入力があります。記事を引用するには

解決策1:あいまいさを処理するO0、1Il、8B、またはその他の組み合わせの違いが心配な場合は、同じ文字として扱います!

これが Base32 の機能です。上記のいずれかの文字(たとえば、数字018)で標準化し、類似している文字(この場合はOILB)を省略します。

ユーザーから入力を受け取ったら、省略された文字を正規の文字にマップします(たとえば、文字Oを数字のゼロに置き換えます)。このように、ユーザーがそれを理解できない場合でも、それはとにかく問題ではありません。

解決策2:すべてのあいまいさを削除するBase32は、その下にあるはずがないとしても、あいまいであるように見える文字を残します。これについて少し経験があるユーザーにとって、彼らはまだ自分が何をしているのか質問するのをやめるでしょう。

エルゴ、あなたはそれをさらに一歩進めて、あいまいであると認識される可能性のあるすべての文字を完全に削除することができます(たとえば、すべての0O1Il8B)。

結局のところ、実際にはアルファベットのサイズが2の累乗である必要はありません。任意のベースに変換するのは簡単で、特に高速である必要はありません(これは多くの場合ユーザー入力と一致するため)。

51
Mervin

人間がIDを簡単に読み取れるようにすることが目的の場合は、他の何かと間違われる可能性のある文字を使用しないでください。

私の最初の推奨は、大文字と数字のみを使用し、Oと0は省略にすることです。残っているものは、一貫性があるため、コピーが簡単になります。

それが不可能な場合は、除外することをお勧めします:0、O、o、i、I、l、1。

ただし、何らかの理由でユーザーにフォントが等幅フォント(通常はプログラミングで使用される)でしか表示されないことが確実な場合、文字は通常等幅フォントで簡単に区別できるため、この手順は必要ない場合があります。

8
JohnGB

大文字と数字のみを使用し、I、O、1、0は省略します。あいまいさはありません。

これと同じ問題が車のナンバープレートで発生します。ニュージーランドでは、カスタムプレートの文字は最大6文字で、大文字または数字にすることができます。ばかげて、Oと0だけでなく、Iと1も許可します。その結果、ナンバープレートをすばやく読み取ることが困難な場合が多く(B1GB0Yなど)、目的を達成できないようです。

私は、Oと0に単一のグリフを使用し、Iと1に別の単一のグリフを使用することで、これを回避する必要があったと思います。

6
Bennett McElwee

実際、一連の文字は実際にはいくつかの状況で読みやすさの問題を引き起こします。たとえば、使用されている書体によって、またはキャプチャされた文字が歪んでいるため、キャプチャにさえあります。これには以下が含まれます:-文字と数字:歪んだOを0から、6をGおよびbから、5をS/sから、2をZ/zから、1をlから数字vs数字:5と6を考慮し、7は一部の国で異なる方法で記述されているか、1と混同されている...-文字と文字:「vv」vs「w」、「cl」vs「d」 、「nn」対「m」、「m」対「rn」対「nn」、…-キャラクターvsクラッター:ランダムなアークがクラ​​ッターとして導入され、キャラクターとは対照的に紛らわしいと認識されます(J対L対7など)

4
ivandervaeren

非常に興味深い質問です。コピーと貼り付けなしで使用することを意図している場合は、同じように見える文字/数字を回避することをお勧めします。それらを削除するか、それらが異なるフォント(おそらくドイツの自動車の登録プレートで使用されているFE-Schriftのようなもの)を使用します。 enter image description here もう1つの問題は、恥ずかしい、または不快な組み合わせを避けることです。 a550rgyは有名な例です。 666または69が問題になる数。 SS、SA、NSなどの文字の組み合わせも問題になる可能性があります。

それはすべて、あなたがどれだけの量の仕事を入れても構わないと思っているか、そしてそれがどれほど重要であるかということです。

3
liftarn

聴衆によっては、ユーザーがこのIDを表示することを意図している場合は、IDで母音を使用しないことが最も安全な場合があります。そのため、母音を削除することで、誤ってIDに含まれていない多くの不適切な単語を簡単に削除できます。

0
kimg85