gpt4 book ai didi

iOS 原生中文编码二维码扫描器

转载 作者:行者123 更新时间:2023-11-29 12:12:35 26 4
gpt4 key购买 nike

这个二维码是由中文Big5编码创建的,不是UTF-8,我使用的是iOS原生类AVMetadataMachineReadableCodeObject,尝试得到结果,但是字符串不可读,如下所示:

**·s¦¡Àô«OI:1:2:¯Â³ð¯ùºñ¯ù:2:20:¨Å»¥@®a¥þ:1:83:ìµÑ¤é¦¡ºñ:2 :25:¥Í¬¡ªwªjºñ:2:10

我尝试通过 UTF-8 将字符串转换为 NSData,然后我再次从 NSData 转换为 NSString,通过其他编码,我认为原始字符串已经得到错误的编码,这就是我可以转换为正确字符串的原因。

这是正确的内容:

**新式环保背:1:2:纯吃茶绿茶:2:20:乳香世家全:1:83:原瑟日式绿:2:25:生活泡泡绿:2:10

The QRCode is here

有什么方法可以使用 iOS native 类获得正确的结果?谢谢

最佳答案

我找到了答案,QRCode 内容字符串编码使用的是 NSISOLatin1StringEncoding,而不是 NSUTF8StringEncoding。

代码:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{

NSMutableString *message = [NSMutableString string];
for (AVMetadataMachineReadableCodeObject *codeObject in metadataObjects) {

NSInteger index = [metadataObjects indexOfObject:codeObject];

NSString *readedString = codeObject.stringValue;

// Restore raw data using NSISOLatin1StringEncoding.
NSData *dataString = [readedString dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:NO];

// Create big5 encoding.
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingBig5_HKSCS_1999);

// Decode data using big5 encoding.
readedString = [[NSString alloc] initWithData:dataString encoding:encoding];

[message appendFormat:@"%zd. \"%@\"\n\n", index, readedString];
}

NSLog(@"%@", message);
}

关于iOS 原生中文编码二维码扫描器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com