2017-05-27 13 views
1

Emojisをエンコードしてデコードしてデータベースに送信しようとしています。Swiftエンコード/デコードemojis

私はエンコードするためにこれを使用する:

var comentario = String() 
let data = Comment.data(using: String.Encoding.nonLossyASCII, allowLossyConversion: true) 
if let data = data { 
    let emojiString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String 
    comentario = emojiString 
} 

をそして、それは動作します。しかし、今私は絵文字を解読する方法を知らない。

これは、エンコードのタイプである---> \ ud83d \ ude1a

+1

あなたは[この](https://gist.github.com/NarayanaRao35を確認しました/ 3a69527a746e6cd688c21838e38e2e21)out? –

+0

私はサーバー側に触れることができないので、もし彼らが同じ種類のエンコーディングを使用しているなら、私は同じことをする必要があります:/ –

+0

あなたのリンクを助けてくれてありがとうホセ –

答えて

7

あなたのエンコーディングのコードは、それが\uNNNNとしてすべて非ASCII文字をコードすること

func encode(_ s: String) -> String { 
    let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)! 
    return String(data: data, encoding: .utf8)! 
} 

に簡略化することができ、だけでなく、 Emojis。デコードは、変換を逆にすることによって行われます。

func decode(_ s: String) -> String? { 
    let data = s.data(using: .utf8)! 
    return String(data: data, encoding: .nonLossyASCII) 
} 

これは、無効な入力が失敗する可能性があるため、オプションで戻します。

例:もちろん

let s = "Hello ." 
let e = encode(s) 
print(e) // Hello \ud83d\ude03. 

if let d = decode(e) { 
    print(d) // Hello . 
} 

あなたも Stringタイプの拡張メソッドとしてコードを定義することができ、あなたがより良い関数名を選択することもできます。

+0

あなたの答えをありがとう、私はすでに問題を修正:) –

1

これを修正しました。あなたがエンコードutf8mb4でサーバーを持っている場合は、エンコード絵文字のため、このコードを使用します。

var comentario = String() 
let data = Comment.data(using: String.Encoding.nonLossyASCII, allowLossyConversion: true) 
if let data = data { 
    let emojiString = NSString(data: data, encoding: String.Encoding.utf8.rawValue)! as String 
    comentario = emojiString 
}// comentario contains the emoji encoded 

DECODING:

let data = comentarios.data(using: String.Encoding.utf8, allowLossyConversion: false) 

    if data != nil{ 
     let valueunicode = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue) as? String 

     if valueunicode != nil{ 
      comentarios = valueunicode! 
     } 
    }//comentarios contantes the deecode string(emoji) 
関連する問題