2011-03-03 5 views
0

나는 여기 데이터베이스의 이미지 NSData를 iPhone의 NSString으로 변환하는 방법은 무엇입니까?

아이폰

에있는 NSString에 데이터베이스에서 이미지의있는 NSData로 변환하고 내 코드

imageData1 = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 2) length: sqlite3_column_bytes(compiledStatement, 2)];   
NSLog(@"the data length %d",[imageData1 length]); 
NSString* newStr1 = [[NSString alloc] initWithData:imageData1 encoding:NSUTF8StringEncoding]; 
데이터의 길이는 6511입니다

이지만, newstr1이 stack overflow question을 참조

전무하다 . 데이터베이스에서 임의의 2 진 데이터로 UTF-8로 인코딩 된 문자열을 만들 수 없습니다. 데이터는 실제로 UTF-8로 인코딩되어야합니다. NSString 형식으로 만 CSV 파일에 입력 할 수 있습니다.

EDIT 내 캐릭터가 전무하다

imageData1 = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 3) length: sqlite3_column_bytes(compiledStatement, 3)];   
NSString * Str1 = [NSString base64StringFromData: imageData1 length: [imageData1 length]]; 
NSData *data1=[NSData base64DataFromString:Str1]; 
NSString* newStr1 = [[NSString alloc] initWithData:data1 encoding:NSUTF8StringEncoding]; 

베이스 64 인코딩 및 디코딩 후에도.

답변

3

실제로 원시 이진 데이터를 CSV 파일로 덤프하지 않는 것이 좋습니다. 아마도 대신 base64 인코딩 데이터를 조사하는 것이 좋습니다. This previous answer이 도움이 될 것입니다.

+0

좀 더 정교 할 수 있습니까? – Warrior

+1

NSString은 임의의 2 진 데이터가 아닌 텍스트를 포함합니다. CSV 파일은 임의의 바이너리 데이터보다 텍스트에 더 적합하며 임의의 바이너리 데이터를 여기에 던져 파일을 읽는 다른 여러 프로그램을 혼동시킬 수 있습니다. "base64"인코딩은 문자, 숫자 및 일반 텍스트를 저장하는 데 안전한 제한된 문장 부호를 사용하여 이진 데이터를 텍스트 문자열로 변환합니다. – Anomie

+0

csv 파일에서 base64로 인코딩 된 문자열을 보내면 텍스트로만 열리고 이미지로 열리지 않습니까? – Warrior

관련 문제