InDesignでQRコードを作るべきではない3つの理由

| コメント(0) | トラックバック(0)
InDesignでQRコードを作るべきではない3つの理由
色々と調べていますが、バージョン変わってもダメなものはだめですね。InDesignでQRコードを作ってはいけません。
まあ、いつもぐちぐち書いていることの続きです。
「問題は日本語を正常に扱えるかどうか。」
これをInDesignにコード化させてみます。
qrerr1.png
qrerr2.png
そして、それをZXINGにてデコードしてみます。
qrerr3.png

42 1e 59 58 fe 9a 18 ce   38 1a fe 69 7a 5e 69 ca
ce 8a a9 ee 38 29 2e 6a   da 3e 5b 8b 8e 38 1a be
68 9b 1 8 0a ce 09 78 c2   17 9c 14 11 81 a7 38 24
63 02 5e 70 10 06 08 00   ec 11 ec 11 ec 11 ec 11


先頭が0x4で始まっていますから頭から8ビットバイトモードにてエンコーディングされています。そして、ここで利用されている文字コードはUTF-8です。
「...正常に扱」までは正常にエンコードされています。しかし次の「え」以降は全く正常にデコードできません。
実はこの文字列は35バイト目でモード変更されています。そして、ここで使われるのは0x8ですからShiftJISモードです。次に続くバイトが文字数になります。0x0aですから10文字。SJISモードでは1文字13bitに圧縮します。実際の残りの文字列は「えるかどうか。」7文字ですから根本的なところで数が合っていません。コード自体は単純にデコード結果から類推します。SJISとしてデコードされて得られているバイト列は「E3 81 88 E3 82 8B」はい、ありがとうございました。UTF-8そのままエンコードかけています。どういうことかというとSJISモードですから文字コードはSJISに変換してエンコードを行わなければいけません。アタリマエのことですが、シングルバイト圏の連中にはここがわからないようです。7文字各3バイトですから21バイトでこれを2バイト一組を13bitに圧縮すると10文字というカウントが出てくるわけです。
デコーダーはSJISモードだからSJISで処理します。ですから文字が化けます。
ちなみに...
生成したQRコードを選択して再編集しようとすると...
qrerr4.png

はい、文字列は化けません。これは、QRコード自体は埋め込まれたカプセル化されたポストスクリプトファイル(EPSって書けよw)です。これにタグがついています。ここにコード化される前の文字列が仕込まれています。ですから無粋な文字数制限なんかが存在するのです。(多分大きなバージョンをサポートするコードも書けていないと...)
では結論です。InDesignでQRコードを作ってはいけない理由。

  1. SJISモードへの移行判定にバグがある。このため、正常にモードを切り替えることが出来ない。
  2. SJISモードでも文字コードはUTF-8のまま処理してしまう。そもそもSJISとUTF-8の変換テーブルを持たないのでSJISコードを扱えない。
  3. 正常に扱えないくせにインターフェイスで見る限りは正常に扱えているように見えてしまう。

よって日本語を扱う上でQRコードはInDesignで生成してはいけません。QR Code Maker Proを使いましょう。
全般UTF-8だけで通しておけば、わたし一人がぶーたれるぐらいで済んだものを...





トラックバック(0)

トラックバックURL: /578

コメントする

このブログ記事について

このページは、tenが2016年2月27日 12:31に書いたブログ記事です。

ひとつ前のブログ記事は「Javascriptからの書き出しコントロール」です。

次のブログ記事は「ScriptSlotの次期バージョン対応版りりーすしますた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

OpenID対応しています OpenIDについて
Powered by Movable Type 5.12

    follow? twitter...     
    available on exchange