如何在 iOS 上的 Swift 中使用 Big5 编码

2023-12-09

我正在扫描带有 Big5 编码的汉字的二维码。 (主页概况)

在 Swift 3 中是否有机会正确解码该字符串?

我找到了这个Objective-C 示例在 GitHub 和这个上那么问题,但是没有kCFStringEncodingBig5_HKSCS_1999 and kCFStringEncodingBigSwift 中的常量。


Update:

我找到了相应的 swift 变量,所以我现在尝试以下操作:

func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) {
    guard metadataObjects?.count ?? 0 > 0 else {
        return
    }
    guard let metadata = metadataObjects.first as? AVMetadataMachineReadableCodeObject, let code = metadata.stringValue else {
        return
    }
    let big5encoding = String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(CFStringEncodings.big5.rawValue)))
    print("Big5 encoded String: " + (String(data: code.data(using: .nonLossyASCII)!, encoding: big5encoding) ?? "?"))
}

Output: Big5 encoded String: \326\367\322\263\270\305\277\366

我怎样才能达到预期的输出Big5 encoded String: 主页概况


更新2:

看来我的 QR 码包含一些损坏的数据,所以我创建了一个新的代码,这次内容肯定是 Big5 编码的字符串(Android 应用程序可以正确读取)。内容是傳統

当我使用 iOS 应用程序扫描此代码时,metadata.stringValue 返回日语字符串カヌイホ

这到底是怎么回事???


CFStringEncodings在 Swift 3 中定义为枚举值:

public enum CFStringEncodings : CFIndex {

    // ...    
    case big5 /* Big-5 (has variants) */
    // ...    
    case big5_HKSCS_1999 /* Big-5 with Hong Kong special char set supplement*/
    // ...    
}

所以你必须转换

CFStringEncodings -> CFStringEncoding -> NSStringEncoding -> String.Encoding

Example:

let cfEnc = CFStringEncodings.big5
let nsEnc = CFStringConvertEncodingToNSStringEncoding(CFStringEncoding(cfEnc.rawValue))
let big5encoding = String.Encoding(rawValue: nsEnc) // String.Encoding

Then big5encoding可用于之间的转换String and (NS)Data.

在您的情况下,您有一个字符串,其中每个 unicode 标量对应于 Big5 编码的一个字节。那么以下应该可以工作:

// let code = "\u{00D6}\u{00F7}\u{00D2}\u{00B3}\u{00B8}\u{00C5}\u{00BF}\u{00F6}"
let bytes = code.unicodeScalars.map { UInt8(truncatingBitPattern: $0.value) }
if let result = String(bytes: bytes, encoding: big5encoding) {
    print(result)
}

或者,使用 ISO Latin 1 编码映射这一事实 Unicode 代码将 U+0000 .. U+00FF 指向字节 0x00 .. 0xFF:

if let data = code.data(using: .isoLatin1),
    let result = String(data: data, encoding: big5encoding) {
    print(result)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iOS 上的 Swift 中使用 Big5 编码 的相关文章

  • 如何在 Swift 中使用未知密钥解码 JSON 响应?

    我想将数据拆分为https blockchain info ticker https blockchain info ticker这样每一行都是它自己的String在一个数组中 我正在制作一个获取所选货币价格的应用程序 因此 如果有人想要澳
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • 适用于 .NET 2.0 的更精确的 PNG 库?

    是的 我正在使用 C 2 0 需要对 PNG 文件执行操作 例如使用自定义调色板 但我不知道如何使用 System Drawing 是否有第 3 方库 最好是兼容 GPL 的 可以对 PNG 编码进行更精细的控制 Update 我想做的事情
  • UITableView 滑动删除 iOS 上的手势冲突

    我的手势识别器有问题 我的目标是在表视图中实现使用滑动删除 但我认为其他手势是相互冲突的 我正在使用这个库romonthego REFrostedViewController https github com romaonthego REF
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • Xcode 调试器 - 如何在 CPU 指令级别单步执行

    这绝对是令人着迷的 但我对编译器如何巧妙地将 C 代码转换为机器指令感到着迷 由于我对某些指令有点模糊 因此如果我能够在单个机器指令级别 低于 C 语句级别 可能会生成多个 CPU 指令 观察已编译程序的操作 将会很有帮助 换句话说 我可以
  • 用于字数计算的 Swift String 中的字数

    我想做一个程序来找出字符串中有多少个单词 用空格 逗号或其他字符分隔 然后把总数加起来 我正在制作一个平均计算器 所以我想要数据总数 然后将所有单词相加 update Xcode 10 2 x Swift 5 或更高版本 使用基础方法enu
  • 在 SwiftUI 中使用分段式选取器在两个页面之间滑动

    我有一个Picker with pickerStyle SegmentedPickerStyle 使其成为分段控件 我想让页面在之间平滑滑动 而不是使用条件语句替换视图 这是我迄今为止所做的 gif 这是到目前为止的代码 由if 而不是在不
  • 为什么我不能在 Realm 属性上使用 private

    我正在尝试在 RealmSwift 中存储一个枚举案例 但 Realm 不支持枚举 本文 https medium com it works locally persisting swift enumerations with realm
  • 缺少常规选项卡

    我刚刚切换到使用 Xcode 5 我已经用一些需要更改的其他设置更改了我的应用程序的名称 但是当我执行此操作时 我注意到我的 常规 选项卡丢失了 有谁知道为什么会发生这种情况 只是快速更新如何在 Xcode 8 中执行此操作
  • 为什么这个谓词格式会变成 '= nil'

    有人建议这个线程 https stackoverflow com questions 40686005 nspredicate crash after swift 3 migration与我的问题完全相同 但是 我的应用程序没有崩溃 并且我
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • 架构armv7的重复符号

    尝试在我现有的应用程序中使用 Layar SDK 时出现以下错误 我该如何解决这个问题 Ld Users pnawale Library Developer Xcode DerivedData hub afxxzaqisdfliwbzxbi
  • 致命错误:在字典中发现“地理编码地标”类型的重复键。 (Mapbox 地理编码器)

    我引用 这通常意味着要么该类型违反了 Hashable 的要求 要么此类字典的成员在插入后发生了变化 我正在使用 Mapbox Geocoder 当发生此运行时错误时 我的 XCode 将我带到线程 1 0 swift runtime on
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • 为什么我的视图仍然以横向呈现?

    我的视图是由导航控制器控制的 因此我将导航控制器支持的方向设置为明确的纵向和纵向UpSideDown 这可以工作 但是如果调用视图时前一个视图处于横向状态 它将以横向方式呈现并保持横向状态 直到设备旋转 如何防止这种情况发生 这是我的代码
  • init 中的 Swift 通用约束

    我有通用的 我希望能够用特定的约束来初始化它 约束仅用于初始化 班里的其他人并不关心 这是一个简化的示例 struct Generic
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController

随机推荐

  • 在 Regex/Javascript 中将一个字符交换为另一个字符

    我想做类似的事情 var a This is an A B pattern ABABA a replace A B a replace B A 并让它返回 gt 这是 B A 模式 BABAB 代替 gt 这是一个 A A 模式 AAAAA
  • ElasticSearch:我们可以在索引期间同时应用 n-gram 和语言分析器吗

    非常感谢 Random 我已将映射修改如下 为了进行测试 我使用 电影 作为索引类型 注意 我还添加了 search analyzer 如果没有这个 我就无法得到正确的结果 但是我对使用 search analyzer 有以下疑问 1 我们
  • Tapestry:字符编码问题

    我有一个 Tapestry 应用程序 它从表单中检索数据 将其写入数据库 然后显示结果 只要不使用特殊字符 一切都可以正常工作 例如 文本 Test 将导致 Test 我猜这个问题与错误的字符编码设置有关 Tapestry java 类 C
  • 删除多个实体上的表行拆分时出错

    我想删除拆分为两个实体的表行 如果我尝试删除主要实体 如果之前我没有使用以下命令加载相关的其他实体 则会收到错误消息context Entry Reference 当我要删除整行时 之前检索相关实体是不是有点愚蠢 如果我继续评论 我会收到以
  • 折叠表达式:替换特定类型但转发所有其他类型:如何实现这一点?

    我试图替换折叠表达式中的特定类型 同时简单地转发所有其他类型 但失败了 As std forward需要显式模板专门化我尝试提供另一组模板化重载 但是这些尚未考虑重载解决方案如果这有效的话 无论如何都会导致不明确的函数调用 第二次尝试是专门
  • 在 Python 3 中调用命令行参数

    我正在用 Python 3 编写一个程序 该程序将从 csv 文件中获取数据 对其进行调整并将新数据写入由用户命名的 csv 文件 我只是想了解命令行部分 我希望它能够以这种格式正确执行 program py input csv outpu
  • 如何在聚合物组件内部使用react?

    似乎可以在聚合物网络组件中使用 React 但我找不到工作示例 只能this 但似乎已经过时了 HTML
  • java 哪个布局管理器适合这个任务?

    我有一个 JPanel 父级 里面有 3 个 JPanel 子级 它们目前都使用 GridLayout 并共同表示一个 UML 类 问题是 当我添加新属性或方法时 所有 3 个 JPanel 都会增长到相同的大小 欲望行为是 无论何时添加方
  • 固定与绝对

    因此 我检查了该网站 发现一些问题与我正在寻找的内容很接近 但并不完全相同 我试图弄清楚如何定位元素 以便在滚动 向上 向下 时位置是固定的 但是当浏览器调整大小 向左 向右 时 位置是绝对或相对的 本质上 我想将一个元素放置在距浏览器窗口
  • C#,如何让图片背景透明?

    我有一个图片框 里面有一个png 然而 即使我将背景色设置为透明 它也不是透明的 有什么想法可能是错的吗 Thanks 我也遇到过有关透明图片的问题 你必须通过代码来绘制它 看我的问题图片框问题 EDIT In 绘画事件 包含背景图像的控件
  • 使用迭代器删除对象时出现 IllegalStateException

    我已经被这个错误困扰了一段时间 但我不知道问题出在哪里 我的代码是这样的 ArrayList
  • 使用 Gensim 提取短语时出错

    我正在尝试使用 Gensim 中的短语来获取句子中的二元组 如下所示 from gensim models import Phrases from gensim models phrases import Phraser documents
  • 用 javascript 获取真正的源代码?

    好吧 我对 js 的了解还不够 但是有没有办法用它来获取页面的真正源代码 例如 document body innerHTML 提供了某种 修复 版本 其中格式错误的标签已被删除 我猜想在原始页面上使用 XMLHttpRequest 可能会
  • 按钮背景颜色

    我需要改变background使用 C 代码 Visual Studio 2008 的按钮颜色 我看到有些人建议加入指令 using System Windows Media 我尝试了一下 它触发了此错误 Windows 不存在于names
  • 提取并列出匹配的单元格

    我试图比较包含公司名称的两列 A 和 B 找到任何完全匹配的名称 并将它们列在 C 列中 使用下面的代码 我没有收到错误 但什么也没有发生 如果有人能指出我正确的方向 我将不胜感激 Sub match Dim LastRow As Inte
  • Python——使用 beautifulsoup 抓取“展开”按钮中的内容

    我正在抓取一个黄页来获取一个城市所有物理治疗师的名字 通过该 url 我可以获得 50 名物理治疗师的列表 但是 当我展开页面时 该 url 不会改变 我如何获得完整的名单 这就是我获取罗斯托克市物理治疗师名单的方式 url https w
  • Io 异常:Oracle 云中的 Oracle 错误 ORA-12650

    我一直在为我的数据库计算机 Oracle 11g 使用 Oracle 云 PAAS Linux 服务器 并拥有可以运行所有 Java 应用程序的 Linux 应用程序服务器 假设我有基于 Spring 的 Web 应用程序 可以连接云数据库
  • 如何以编程方式模拟 Flutter 中按钮上的 onTap?

    例如 Update This GestureDetector is embedded inside a third party package that will invoke a series of animation along wit
  • 为什么这段 javascript 代码片段的日志记录为 1? [复制]

    这个问题在这里已经有答案了 在一次采访中 我被要求猜测以下代码片段的输出 var foo 1 function bar foo 10 return function foo bar console log foo 我认为输出将是 10 因为
  • 如何在 iOS 上的 Swift 中使用 Big5 编码

    我正在扫描带有 Big5 编码的汉字的二维码 主页概况 在 Swift 3 中是否有机会正确解码该字符串 我找到了这个Objective C 示例在 GitHub 和这个上那么问题 但是没有kCFStringEncodingBig5 HKS