如何生成带有特殊字符“¿”的code128条码?

时间:2019-09-20 07:36:19

标签: ios swift

我正在开发具有扫描条形码功能的应用程序,但是我遇到了一些字符,这些字符对我来说一团糟。 android上也发生了同样的问题,我已将其修复,但无法以相同的方式迅速修复它。

我尝试了多种库和本机方法从提供的String中生成code128条形码的图像。它适用于除特殊字符(如“¿”)以外的所有字符。谷歌搜索问题后,我尝试了所有阅读的内容,但仍然无法解决。

extension UIImage {

    convenience init?(barcode: String) {
        let data = barcode.data(using: .ascii)
        guard let filter = CIFilter(name: "CICode128BarcodeGenerator") else {
            return nil
        }
        filter.setValue(data, forKey: "inputMessage")
        guard let ciImage = filter.outputImage else {
            return nil
        }
        self.init(ciImage: ciImage)
    }

}

let barcode = UIImage(barcode: "some text")

从卡中扫描此精确的条形码图像并保存该值时,一切正常。它甚至说“;038388¿”是code128类型,但是当我尝试从中生成code128条形码图像时,不知何故它带有“¿”字符。

1 个答案:

答案 0 :(得分:0)

代码128被定义为仅能够编码ASCII,但是ASCII没有“¿”字符。

转换let data = barcode.data(using: .ascii)失败。

我建议使用

之类的代码尽早捕获
guard let data = barcode.data(using: .ascii) else {
   return nil
}