Big5でエンコードされた中国語文字でQRコードをスキャンしています。iOSのSwiftでBig5エンコーディングを使用する方法
Swift 3でこの文字列を正しく復号化する機会はありますか?
私はGitHubの上で、このObjective-C exampleを発見し、このSO questionが、スウィフトにはkCFStringEncodingBig5_HKSCS_1999
とkCFStringEncodingBig
定数はありません。
更新:
は私が対応する迅速な変数を見つけたので、私は今、次のことを試してみました:
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) ?? "?"))
}
出力:Big5 encoded String: \326\367\322\263\270\305\277\366
私は期待に取得できますか出力Big5 encoded String: 主页概况
アップデート2:
私のQRコードは、いくつかの壊れたデータが含まれているようですので、私は新しいコードを作成し、この時間は、コンテンツは間違いなくあるBig5の文字列(Androidのアプリケーションはそれを正しく読み込み)をエンコード。私は私のiOSアプリでこのコードをスキャンすると、コンテンツは地獄はここで何が起こっているか、metadata.stringValueは日本の文字列カヌイホ
を返し傳統
あります?
「UInt(CFStringEncodings.big5_HKSCS_1999.rawValue)」を試す – ColGraff
実際の入力データは何ですか?文字列をデータに変換し(nonLossyASCIIを使用)、文字列に戻す(big5encodingを使用して)ようです。 –
thats correct、もっと明確にするためにいくつかのコードを追加します。 – ndreisg