0
Thumbsup

いい質問だ

0

Thumbsdown

うーん

バーコード(QRコード)ライブラリの文字化け

uee100000
uee100000 0

投稿日:2013-04-25 18:12:51

こんばんは。

marketplaceで登録されているscandit sdkというバーコードリーダライブラリを使用しています。
https://marketplace.appcelerator.com/apps/3907?252350990

日本語入のQRコードを読み込むと読込結果が文字化けします。
※数字のデータ、アルファベットのデータは問題なく読み込み可能です。

TitaniumSDKバージョン:3.10
端末:Android2.3.4

原因の特定をするため、
javaのモジュールを書いてバイトデータを眺めてみました。

一部抜粋
public String convertString(String inputString)
  {
    String outputString;
    byte[] inData = inputString.getBytes();

    for (int i=0; i < inData.length; ++i){
      Log.d(LCAT, Integer.toHexString(inData[i] & 0xff));
    }
    outputString = utf8toSJIS(inData);
    Log.d(LCAT, "outputString : " + outputString);
    return outputString;
  }

そうすると以下のデータが帰ってきます。

「ん」をQRコードにしたものを読み取った場合
・期待するSJISデータ
codepoint 82f1   bit表示 1000 0010 1111 0001
・読み取り結果 
codepoint c2b1  bit表示 1100 0010 1011 0001

「ヴ」をQRコードにしたものを読み取った場合
期待するSJISデータ
codepoint  8394  bit表示 1000 0010 1111 0001
・読み取り結果
codepoint  c394  bit表示 1100 0011 1001 0100

どうも
・先頭から2番めのbitに1が追加されている
・10番目のbitが0で上書きされている
というような感じです。
※10個くらいの文字を試しましたが同じです。
※10番目のbitが上書きのようなので、SJISに戻すことも難しいです。またgetBytes("SJIS")とするとすべてのコードポイントがfcで戻ってきます。

日本語入のQRコードも問題なく読めたよ!というような方はいらっしゃいませんでしょうか。

何か手がかりになる情報がございましたら教えて下さい。



諦めないで!でもまだ回答はありません…

ログインすると回答することができます。