IOS:德语字符显示为日语

时间:2012-09-11 09:10:28

标签: iphone ios encoding utf-8

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

例如:代码包含 - 爱因斯坦大街54号 81675慕尼黑/德国将有日语字符而不是ß和ü。

任何想法如何解决这个问题?

P.S。使用安卓条形码扫描仪它似乎是正确的。

我的代码:

-(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...
}

[符号数据]包含日语字符而不是德语。

1 个答案:

答案 0 :(得分:0)

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

NSString* barcode = symbol.data; 

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

Maby它适合你。