日本語

テキストおよび日常ツール · QR & バーコード ツールキット

QR コードのエンコード モード: URL を大文字にするとコードが小さくなる理由

· 背景

qrコード エンコード ブラウザ処理

ToolAcre 固定 UTF-8 バイト モードを指す数値および英数字モード カード
オリジナル ToolAcre ベクトル イラスト

4 つの QR データ モードとそのビット コストについて説明し、大文字でドメインを記述するとコードが英数字モードになり、グリッドが縮小される方法を示します。ただし、大文字と小文字を区別するパスについては注意が必要です。

ToolAcre は大文字と小文字が変わってもモードを切り替えないため、大文字を使用してもコードが小さくなるという保証はありません

アウトラインでは、2 つのケース バリアントが異なる QR モードをトリガーすると想定していますが、ToolAcre は常にテキストを UTF-8 として事前エンコードし、依存関係をバイト モードで呼び出します。したがって、ここでは大文字と小文字の ASCII 文字が同じバイト数を消費します。

バイト長を一定にすることで修正を確認できます。 ASCII の大文字と小文字はそれぞれ 1 UTF-8 バイトになるため、大文字と小文字のみを変更しても、ToolAcre にはジェネリック モードの記事で説明されているビット パッキングの利点が得られません。結果として得られる 2 つのグリッドが異なる場合は、正確な文字列と設定を調べてください。 `generateQrMatrix` が呼び出すことのない英数字ブランチにそれを帰属させないでください。

数値モードはバックグラウンドのみです。 ToolAcre は数字でもバイト モードを使用します

数値モードは、それを選択する QR エンコーダーでより高密度になる可能性がありますが、この実装では分岐ではありません。数字のみの文字列は依然として TextEncoder とライブラリにバイト モード ペイロードとして入力されるため、このツールキットは数値モードのサイズを約束しません。

数字のみの入力は引き続き `TextEncoder` に入り、UTF-8 バイトのバイナリ文字列に変換され、モード `Byte` でライブラリに追加されます。 ToolAcre は、予測可能な 1 つの国際テキスト パスを維持するために、効率のトレードオフを受け入れます。したがって、別のエンコーダの数値容量テーブルは、ここに適合するものを誇張する可能性があるため、バージョンや最大値を保証するために使用すべきではありません。

英数字モードはバックグラウンドのみです。 ToolAcre は大文字入力に対して選択しません

英数字モードも同様に、ToolAcre の動作ではなく、一般的な QR バックグラウンドに属します。アプリケーションは、45 文字のレパートリーを検査したり、大文字のペアをパックしたりしません。その明示的な設計により、予測可能な UTF-8 処理が優先されます。

一般的な英数字レパートリーにも、パネルに検証ブランチがありません。バイト モードがすでに選択されているため、ToolAcre はバイト フォールバックのトリガーとして小文字を拒否しません。これにより、ペイロードの準備が簡単になります。ユーザーは、セグメンテーションを考慮することなく、大文字と小文字を区別する URL と句読点を保存できます。その代償として、大文字変換をこの実装の行列サイズの最適化として販売できないことが挙げられます。

バイト モード — 1 文字あたり 8 ビット、小文字または異常な記号が出現するたびにフォールバック

バイト モードでは、ブラウザによって準備された UTF-8 バイトが保存されます。これにより、アクセント、CJK テキスト、および絵文字がテストされたマトリックスを往復できるようになります。非 ASCII 文字は複数バイトを消費し、ASCII よりも早く設定された容量に達する場合があります。

UTF-8 は可変長であるため、バイト モードは文字によって異なります。 ASCII 文字は 1 バイトを使用しますが、アクセント、CJK 文字、絵文字はさらに多くのバイトを使用できます。このテストでは、40 個の ASCII 文字と 40 個の日本語文字を比較し、後者のより大きな行列を観察します。有用な最適化は、表示される文字をカウントしたり、大文字と小文字を強制的に変更したりするのではなく、エンコードされたバイト数を減らすことです。

漢字モードと混合セグメントはこの実装では生成されません

漢字モードと混合セグメントの最適化は、ToolAcre エンコーダーによって公開または要求されません。詳細なビットコストの説明は、ユーザーがこのツールの出力を予測するのに役立たないため、リポジトリによる実装がなければ省略されます。

漢字モードと混合セグメンテーションは他の QR エンコーダでも依然として有効な概念ですが、ここではソースに裏付けられたパスがありません。依存関係は、1 回の呼び出しで既にエンコードされた 1 つのバイト文字列を受け取ります。セグメント オブジェクトまたは ECI コントロールがなければ、ToolAcre は特殊な圧縮を保証できません。これらの機能を必要とする読者は、それらを明示的に公開するツールを選択してテストする必要があります。

大文字のトリックは ToolAcre の固定バイトモード エンコーダーには適用されません

ドメインを大文字に変更しても、ここでは別のモードはアクティブになりません。また、大文字と小文字を区別するパスまたはクエリが変更される可能性があります。正しい宛先を保持してください。コンパクトさが重要な場合は、セマンティクスを変更するのではなく、URL を短縮するか、不要なパラメータを削除してください。

大文字と小文字を変更すると、ペイロードが破損する可能性もあります。ドメイン ホストでは通常、大文字と小文字が区別されませんが、パスとクエリ値はアプリケーションによっては大文字と小文字が区別される場合があります。 `/Invite/Aa7` を `/INVITE/AA7` に変換すると、見た目はすっきりしますが、別のリソースに到達する可能性があります。 URL ビルダーは明示的なアドレスを保存します。コンパクト性は、最終ルートをテストせずに宛先セマンティクスを変更することを正当化するものではありません。

実用的な例: モード変更を要求せずに、大文字と小文字を区別してペイロード バイトを比較する

https://example.invalid/path とその大文字バリアントを生成し、生の文字列と行列を比較します。ソースは両方ともバイト モードを通過することを証明しているため、観察された行列の違いを英数字モードの切り替えとして説明してはなりません。

安全に機能する比較では、制御されたテスト ホストを使用し、両方の出力をデコードします。それぞれが入力された文字列を正確に返すことを確認し、バイト数を記録し、モジュールの寸法を比較します。予想される教訓は、大文字が勝つということではありません。それは、ToolAcre が両方の ASCII ケースのバリアントをバイト モードで保持するということです。短縮が必要な場合は、クエリ パラメーターを削除するか、意味をそのままにしながらより短い制御されたパスを使用します。

要点: 大文字と小文字に基づくモード切り替えに依存するのではなく、意図したテキストを保持して直接短くする

ToolAcre の動作はアウトラインよりも単純です: UTF-8 バイト入力、自動バージョン選択、マトリックス出力。ペイロードを正確かつ簡潔に保ち、別のエンコーダーからのモード トリックを適用する代わりに、生成されたシンボルを検査してテストします。

設計者は、ToolAcre が実際に実装するペイロード層で最適化する必要があります。リンクを簡潔に保ち、ドキュメント全体の埋め込みを避け、オプションの vCard メモをトリミングし、必要に応じて制御下で安定したリダイレクトを使用します。次に、自動バージョン選択が残りのバイトに応答するようにします。別のジェネレーターからコピーされたモード トリックは誤った期待を生み出し、この行列を削減せずに大文字と小文字を区別するデータを損傷する可能性があります。