1

ウィキペディアの DataMatrix の記事には、デフォルトで ASCII のみをサポートすることが記載されています。また、任意のバイト値を表現できる Base256 エンコーディングの特別なモードについても言及しています。

ただし、これまでに試したすべてのバーコード生成ライブラリは、データを文字列として入力し、ASCII を超える文字 (Onbarcode および Barcodelib) のエラーを表示することをサポートしています。Base256 モードに必要な byte[] を入力する方法もありません。

Base256 モードをサポートするバーコード生成ライブラリはありますか? (できればサポート付きの商用ライブラリ)

Unicode 文字列を Base64 に変換し、データをスキャンした後に base64 からデコードすることも 1 つの方法ですが、他に何かありますか?

4

1 に答える 1

0

可能ですが、いくつかの落とし穴があります: 1) アプリを作成している言語によって異なります (プログラミング言語ごとに異なる DM ライブラリには異なるバインディングがあります。たとえば、* nix- にはかなり一般的なライブラリがあります)。 [libdmtx][1] と呼ばれる関連環境 (Maemo/MeeGo/Tizen のほぼすべてのバーコード スキャナー/ジェネレーター、いくつかの WinPhone アプリ、KDE ​​など) を使用しています。 unicode はかなり問題ありませんが、エンコードされたメッセージを適切にマークしません (「ねえ、他の読者、ここは unicode です!」)。そのため、[ZXing][2] などの他のライブラリは、多くの独自のスキャナーと同様に、その unicode をデコードします。 ASCII としてのメッセージ。

[ZXing][2] の作成者と話し合った限りでは、適切なマークはおそらく ECI セグメント (最初のコードワードとして 0d241 バイト、その後に "0d26" バイト (UTF-8 の場合) が続く) です。ただし、これは理論上の解決策であり、QR コードのようなものに基づいており、DataMatrix ではまったく標準化されていません ([libdmtx][1] も [ZXing][2] も、そのようなマーキングを使用したエンコードはまだサポートしていませんが、 、そのようにいくつかのステップがあります。

TL;DR: 生成されたコード (Unicode メッセージを含む) をアプリ間でのみ使用する予定がある場合は、[libdmtx][1] を両側でエンコードとデコードの両方に自由に使用できます。正常に動作します:) そうでない場合 — あなたの言語で [zxing][2] ポートを探してみてください (そしてポートがエンコーディングをサポートしていることを確認してください)。

1: github.com/dmtx/libdmtx

2: github.com/zxing/zxing

于 2015-01-14T21:38:49.643 に答える