私は1つの問題で立ち往生しています。Base64で文字列をデコードしようとすると、それに応じて特殊文字が返されます。そして、この文字列を使おうとすると、アプリがクラッシュします。以下は、値のデコードから取得されるコード文字列です。
64B´%4àîÈÝ%ZÌ%
´E@/vÀ6mԶŪÜ
通常の文字列にするために私は何をしなければなりませんか?誰かがこの問題から私を助けることができますか?
私は1つの問題で立ち往生しています。Base64で文字列をデコードしようとすると、それに応じて特殊文字が返されます。そして、この文字列を使おうとすると、アプリがクラッシュします。以下は、値のデコードから取得されるコード文字列です。
64B´%4àîÈÝ%ZÌ%
´E@/vÀ6mԶŪÜ
通常の文字列にするために私は何をしなければなりませんか?誰かがこの問題から私を助けることができますか?
私はbase64エンコーディング/デコーディングのために以下のメソッドを使用しました...
- (NSString *)base64Encode:(NSString *)plainText
{
NSData *plainTextData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainTextData base64EncodedString];
return base64String;
}
- (NSString *)base64Decode:(NSString *)base64String
{
NSData *plainTextData = [NSData dataFromBase64String:base64String];
NSString *plainText = [[NSString alloc] initWithData:plainTextData encoding:NSUTF8StringEncoding];
return plainText;
}
この方向に行ってください
ここからBase64ファイルをダウンロードします
ダウンロードしたフォルダからこれら2つのファイル(NSData + Base64.h、NSData + Base64.m)を取り出して、プロジェクトに追加します。
これらの新しく追加されたファイルに対してARCを無効にします(プロジェクトでARCを有効にする場合)
#import "NSData+Base64.h"をファイルにインポートします
タスクを完了するには、以下の2つの方法を使用してください
base64Encode
base64Decode
これが私のコードスニップです、私のデモ例でどのようにしたか
#import "ViewController.h"
#import "NSData+Base64.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize messageTextField;
@synthesize resultBase64Label;
@synthesize resultPlainTextLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (IBAction)convertToBase64:(id)sender {
//keypad go back
[messageTextField resignFirstResponder];
NSString *resultBase64String = [self base64Encode:messageTextField.text];
resultBase64Label.text = resultBase64String;
}
- (IBAction)convertToPlainText:(id)sender {
NSString *resultPlainString = [self base64Decode:resultBase64Label.text];
resultPlainTextLabel.text = resultPlainString;
}
//convert plain text o base64
- (NSString *)base64Encode:(NSString *)plainText
{
NSData *plainTextData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainTextData base64EncodedString];
return base64String;
}
//convert base64 to plain text
- (NSString *)base64Decode:(NSString *)base64String
{
NSData *plainTextData = [NSData dataFromBase64String:base64String];
NSString *plainText = [[NSString alloc] initWithData:plainTextData encoding:NSUTF8StringEncoding];
return plainText;
}
@end
これが結果画面です
NSString *bufferStr = @"64B´%4àîÈÝ%ZÌ%´E@/vÀ6mԶŪÜ";
NSData *temp = [bufferStr dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *dst = [[[NSString alloc] initWithData:temp encoding:NSASCIIStringEncoding] autorelease];
NSLog(@"converted: %@", dst);
または使用するencoding:NSNonLossyASCIIStringEncoding
これがあなたに役立つかもしれない公式のドキュメント参照です。