【问题标题】:How to generate code128 barcode with special character '¿'?如何生成带有特殊字符“¿”的code128条码?
【发布时间】:2020-01-21 05:54:39
【问题描述】:

我正在开发能够扫描条码的应用程序,但是我遇到了一些字符问题,这对我来说一切都搞砸了。 android上也出现了同样的问题,我修复了它,但我无法以同样的方式快速修复它。

我尝试了多个库和本地方法来从提供的字符串生成 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条形码图像时,不知何故它与“¿”字符有问题。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    Code128 被定义为只能编码 ASCII,但 ASCII 没有“¿”字符。

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

    我建议使用类似

    的代码尽早捕捉到这一点
    guard let data = barcode.data(using: .ascii) else {
       return nil
    }
    

    【讨论】:

    • 唯一的问题是我需要生成一个条形码。是的 ascii 是个问题,但它怎么会扫描完全相同的字符并说它是 code128 但无法从中生成图像。
    • 什么是“它”?当“it”扫描代码时,“it”会报告什么?您能否更新您的问题以显示您希望看到生成的条形码?
    • 是的,但我的问题是关于“它扫描”和“它说”中的“它”是谁或什么。你的安卓应用?扫描仪应用程序?同样,查看您在 Android 应用程序中生成的 Code128 会很有帮助,仅供比较。
    • 好吧。我的 ios 和 android 应用程序都可以扫描条形码并将条形码类型和条形码文本保存在服务器上,然后将由该文本和条形码类型生成的图像显示给用户。从条形码文本“;038388¿”生成图像时,他们俩都遇到了“¿”那个字符的问题。但是我在android上修复了它并未能在ios上修复它。当我尝试使用“¿”扫描我的卡但生成图像失败时,扫描工作正常
    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 2012-11-08
    • 2022-01-18
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多