2015-09-10 2 views
2

Я пытаюсь декодировать этот qr-код, используя C++-порт декодера zxing. Исходное изображение: imageЗнаки Zhing Kanji в QRCode

После некоторой предварительной обработки я подготовил четкое изображение:

qr code after preprocessing

Теперь после расшифровки этого кода я получаю неправильный текст:

rbNJ ‰ F http://www.biccamera.com/

в базах:

83 72 83 62 83 4e 83 4a 83 81 83 89 81 46 0d 0a 68 74 74 70 3a 2f 2f 77 77 77 2e 62 69 63 63 61 6d 65 72 61 2e 63 6f 6d 2f 00 

После прочтения кода выше корыта сайт the online barcode reader Я получаю текст:

ビ ッ ク カ メ ラ: http://www.biccamera.com/

в байтах:

e3 83 93 e3 83 83 e3 82 af e3 82 ab e3 83 a1 e3 83 a9 ef bc 9a 0a 68 74 74 70 3a 2f 2f 77 77 77 2e 62 69 63 63 61 6d 65 72 61 2e 63 6f 6d 2f 0a 

Первая часть из сообщение различно (я проверил и лизинг zxing ary использовать декодирование кандзи в первой части).

Как правильно декодировать этот qrcode в utf8 и сохранить результат в std::wstring?

Мой текущий код:

#include <locale> 
#include <codecvt> 
#include <string> 

zxing::qrcode::Decoder decoder; 
zxing::Ref<zxing::DecoderResult> result = decoder.decode(zxing::Ref<zxing::BitMatrix>(bitmatrix)); 
zxing::Ref<zxing::String> ZXstring = result->getText(); 
std::string STDstring = ZXstring->getText(); 

std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter; 
std::wstring wide = converter.from_bytes(STDstring); //bad conversion exception 

ответ

0

Решение этой проблемы очень просто:

Чтобы прочитать код, приведенный выше, необходимо скомпилировать ZXing с дополнительной библиотекой: libiconv. После этого этот qr-код будет правильно декодирован.

Если вы используете ОС Windows и Visual Studio, эта статья о здании libiconv может быть полезным: How to Build libiconv with Microsoft Visual Studio

В исходном коде, пожалуйста, проверьте IfDef: NO_ICONV или даже лучше включить эту библиотеку с помощью CMake.

Смежные вопросы