QRCode中的汉字Zxing 我尝试用ZZY解码器的C++端口对这个QR码进行解码。原始图像:

QRCode中的汉字Zxing 我尝试用ZZY解码器的C++端口对这个QR码进行解码。原始图像:,c++,qr-code,zxing,C++,Qr Code,Zxing,经过一些预处理后,我准备了一张清晰的图像: 现在,在解码此代码后,我收到了错误的文本: rbNJ‰F 以字节为单位: 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 e3 83 93 e3 83 83 e3 82 af e3 82 ab e3 83 a1 e3 83 a9 ef bc 9a

经过一些预处理后,我准备了一张清晰的图像:

现在,在解码此代码后,我收到了错误的文本:

rbNJ‰F

以字节为单位:

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
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
通过网站阅读上述代码后,我收到以下文本:

ビックカメラ:

以字节为单位:

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
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库在第一部分使用汉字解码)

如何将该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
#包括
#包括
#包括
zxing::qrcode::解码器;
zxing::Ref result=decoder.decode(zxing::Ref(位矩阵));
zxing::Ref ZXstring=result->getText();
std::string STDstring=ZXstring->getText();
std::wstring_转换器;
std::wstring wide=转换器从字节(STDstring)//错误转换异常

这个问题的解决方案非常简单:

要阅读上述代码,您需要使用附加库编译zxing:
libiconv
。 之后,该二维码将被正确解码

如果您使用Windows和Visual studio,这篇关于构建libiconv的文章可能会有所帮助:

在源代码中,请检查ifdef:
NO_ICONV
,或者更好地使用CMake启用此库