【问题标题】:Swift decode and encode stringSwift 解码和编码字符串
【发布时间】:2016-10-09 00:35:50
【问题描述】:

我正在尝试使用 Swift 对字符串和数据进行编码和解码。 在Java中它相对简单,我可以使用CharsetCharsetDecoderCharsetEncoder,就像下面的sn-p代码一样。 我认为解决方案是使用String.Encoding,但如何使用?

public static void Test() throws CharacterCodingException {
    Charset charset = Charset.forName("UTF-8");
    CharsetDecoder chdecoder = charset.newDecoder();
    CharsetEncoder chencoder = charset.newEncoder();
    String s = "Encode and Decode Example.";
    if(!chencoder.canEncode((char) 9)) return;//not here but i need this method
    ByteBuffer byteBuffer= ByteBuffer.wrap(s.getBytes());
    CharBuffer charBuffer = chdecoder.decode(byteBuffer);
    ByteBuffer newByteBuff = chencoder.encode(charBuffer);
    while(newByteBuff.hasRemaining()){
        char ch = (char) newByteBuff.get();
        System.out.print(ch);
    }
    newByteBuff.clear();
}

【问题讨论】:

    标签: java swift string character-encoding char


    【解决方案1】:
    let str = "iOS Developer Tips encoded in Base64"
    println("Original: \(str)")
    let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding)
    if let base64Encoded =      utf8str?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0)) 
    {
    println("Encoded:  \(base64Encoded)")
    if let base64Decoded = NSData(base64EncodedString: base64Encoded, options:   NSDataBase64DecodingOptions(rawValue: 0))
                          .map({ NSString(data: $0, encoding: NSUTF8StringEncoding) })
    {
        // Convert back to a string
        println("Decoded:  \(base64Decoded)")
    }
    }
    

    【讨论】:

      【解决方案2】:

      Swift3 答案

      let str = "iOS Developer Tips encoded in Base64"
      print("Original: \(str)")
      let utf8str = str.data(using: String.Encoding.utf8)
      if let base64Encoded = utf8str?.base64EncodedString(options:Data.Base64EncodingOptions(rawValue: UInt(0)))
      {
          print("Encoded:  \(base64Encoded)")
          if let base64Decoded = NSData(base64Encoded: base64Encoded, options:NSData.Base64DecodingOptions(rawValue: UInt(1)))
              .map({ NSString(data: $0 as Data, encoding: String.Encoding.utf8.rawValue) })
          {
              // Convert back to a string
              print("Decoded:  \(base64Decoded)")
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        • 2016-01-02
        • 2012-03-25
        相关资源
        最近更新 更多