ZBar で QR コードをスキャンすると、プロセスの結果として生成される文字列が Unicode 文字を正しく表示しません。無料で使用できる QR コード ジェネレーター ( http://qrcode.kaywa.comなど)によって QR コードとしてエンコードされた単語Mártiは、 Mテ。rtiになります。
他の SO の質問 ( 1、2 ) では、結果の文字列の先頭に BOM を埋め込むことが提案されていましたが、これを行うと:
NSString *qrString = [NSString stringWithFormat:@"\xEF\xBB\xBF%@",symbol.data];
またはこれ:
NSString *qrString = [[NSString alloc] initWithFormat:@"\357\273\277%@", symbol.data];
アジアのキャラクターと同じ、欠陥のある結果になりました。symbol.data
ZBar によって提供される結果の NSString です。
更新: dda の回答に基づくと、解決策は次のとおりです。
NSString *qrString = symbol.data;
//look for misinterpreted acute characters and convert them to UTF-8
if ([qrString canBeConvertedToEncoding:NSShiftJISStringEncoding]) {
qrString = [NSString stringWithCString:[symbol.data cStringUsingEncoding: NSShiftJISStringEncoding] encoding:NSUTF8StringEncoding];
}