2016-09-06 10 views
1

base64のデコードされた文字列を取得して印刷しようとしていますが、その結果が改行を認識しません。たとえば、このBase64の文字列デコード後に/ n改行が認識されない

Hi 
hello 
hi 

よう

print("Hi \n hello \n hi") 

印刷が期待されるように、私は、文字列のエンコードされたバージョンを復号化し、その結果を印刷するとき、それは認識改行せずに文字列を返します。 。ここに私のコードです。

var encodedString = "SGkgXG4gaGVsbG8gXG4gaGk=" 

let decodedData = NSData(base64EncodedString: encodedString, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters), 
     decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 

print (decodedString!) 
// prints "Hi \n hello \n hi" 

Swiftがこれらの改行を認識できるようにコードを変更するにはどうすればよいですか?ありがとう!

+0

? –

+0

私のコードでは、PHP関数base64_encode($ str)を使ってエンコードされていますが、私の例の文字列はbase64encode.orgを使ってエンコードされています。エンコーディングの両方の方法で "Hi \ n hello \ n hi"という印字をします。 –

+0

@NeilJohnsonだから、この 'encodedString'をサーバレスポンスから取得していますか? –

答えて

2

あなたの文字列が正しくエンコードされていない、私はdecodedStringはこのようHi \\n hello \\n hiのような文字列が含まれているあなたはそれをデコードする際に遊び場にあなたの文字列encodedStringをチェックして、それが出力で\nを印刷している理由\nのthatsをエスケープされています。このように正しく文字列をエンコードしようとします。

var str = "Hi \n hello \n hi" 
let utf8str = str.dataUsingEncoding(NSUTF8StringEncoding) 
if let base64Encoded = utf8str?.base64EncodedStringWithOptions([]) 
{ 
    let decodedData = NSData(base64EncodedString: base64Encoded, options: []), 
    decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 
    print (decodedString!) 
} 

編集:問題はここにある文字列であるPHPでエンコードされ、あなたは迅速にアプリでデコードされています。あなたの解読文字列は\nの代わりに\\nが含まれています。\nの文字をエスケープして解決する方法は、replace\\n\nですが、これはあなたのためにはうまくいかないでしょう。

var str = decodedString!.stringByReplacingOccurrencesOfString("\\n", withString: "\n") 
print (str) 

注:同じ側にあなたencode/decode両方が迅速で、あなたのPHPやアプリケーション側のどちらかを意味している場合それは打者です。

+0

投票の理由? –

+0

ありがとうございました!私はそれが '再利用可能な'コードではないことを知っていますが、今のところそれをしなければなりません。私は賞賛を受けたが、私の評判はそれが公に見えるほど高くはなかった。 –

+0

はい、受け入れ可能な回答とupvote –

-1

私はswiftに精通していませんが、私はobjective-cで試して正しく結果を得ました。あなたは...迅速にコードを変換することができます

NSString *str = @"Hi \n hello \n hi"; 
NSLog(@"Original Str value: %@", str); 

// Encoding the string value 
NSData *encodeData = [str dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *base64String = [encodeData base64EncodedStringWithOptions:0]; 
NSLog(@"Encode String Value: %@", base64String); 

// Decoding the encoded string value 
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0]; 
NSString *decodedString = [[NSString alloc] initWithData:decodedData encoding:NSUTF8StringEncoding]; 
NSLog(@"Decode String Value: %@", decodedString); 

出力:

enter image description here

ハッピーコーディング...あなたはあなたの文字列をエンコードする方法

+0

ダウン投票の理由??? –

関連する問題