1

我有使用 ZBarSDK 扫描 QR 码的 IOS 应用程序。问题是当我尝试用德语字符扫描代码时,它们在应用程序中显示为日语。

例如:包含 - Einsteinstraße 54 81675 München/Germany 的代码将使用日语字符而不是 ß 和 ü。

有什么想法可以解决这个问题吗?

PS 使用 android Barcode Scanner 它会正确显示。

我的代码:

-(IBAction)StartScan:(id) sender
{
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.readerView.torchMode = 0;
    reader.tracksSymbols = YES;
    ZBarImageScanner *scanner = reader.scanner;
    [scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
    [self presentModalViewController: reader
                            animated: YES];
    scanner = nil;
}

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
{
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
    ZBarSymbol *symbol = nil;

    for(symbol in results) {
        self.hiddenData=[NSString stringWithString:symbol.data];
        NSLog(@"SymbolData: %@", [symbol data]);
    }
    resultTextView.text=symbol.data;
    NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
    [storeData setObject:self.hiddenData forKey:@"CONSUMERID"];
    NSLog(@"SYMBOL : %@",self.hiddenData);
    //rest of code...
}

[符号数据] 已经包含日文字符而不是德文字符。

4

1 回答 1

0

我有同样的问题,我解决了:

NSString* barcode = symbol.data; 

if ([barcode canBeConvertedToEncoding:NSShiftJISStringEncoding]) { 
    barcode = [NSString stringWithCString:[barcode cStringUsingEncoding: NSShiftJISStringEncoding] encoding:NSUTF8StringEncoding]; 
}

也许它对你有用。

于 2012-09-11T15:09:16.597 回答