当我尝试将 NSString
对象转换为 NSdata
对象时,我使用以下代码:
NSString *finalWordList = wordList.text;
NSData *data = [finalWordList dataUsingEncoding:NSUTF8StringEncoding];
wordList是 UITextView
对象。
之后,我将 NSdata
对象上传到我的网络服务器,该服务器将采用.txt格式。当我检查文件时,我注意到上传的txt文件中缺少 \n
字符。有谁知道为什么?
任何形式的帮助都将受到赞赏。
答案 0 :(得分:1)
尝试此操作然后返回更新后的结果
NSString *finalWordList = wordList.text;
NSLog("finalWordList = [%@] %d", finalWordList, [finalWordList length]);
NSData *data = [finalWordList dataUsingEncoding:NSUTF8StringEncoding];
NSLog("data length = %d", [data length]);
我敢打赌你的NSData对象是正确的长度,这意味着你的传输/存储步骤引入了错误。既然你没有表明你是怎么做的,那肯定很难说。
答案 1 :(得分:0)
这是我的代码的一部分...我没有在这里发布,因为它有点长,哈哈。 我试图做的是,我尝试获取用户输入(来自UITextField)并在屏幕上显示(通过UITextView)。之后,我从UITextView获取.text值,将其从NSString转换为NSData,然后使用php上传脚本将NSData对象上传到HTTP服务器。
NSString *completeName = [NSString stringWithFormat:@"%@/%@.txt",mainDelegate.gCourseCode,mainDelegate.gUID];
NSString *finalWordList = wordList.text;
NSData *data = [finalWordList dataUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = @"http://cetl.no-ip.org:50080/upload.php";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField:@"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",completeName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:data]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(returnString);
可以将txt文件上传到服务器。但它错过了\ n字符。
非常感谢你的帮助。
答案 2 :(得分:0)
我假设您希望您的字符串是换行符分隔的单词列表。
不要忘记,对于HTTP,正确的行结尾是回车符,换行符(%0D%0A)。
答案 3 :(得分:0)
我想我知道答案。这是因为操作系统的不同。
对于iphone OS,\ n表示新行。但是对于Windows记事本中的显示,还需要“\ r”,即“\ r \ n”,这样它就可以显示新的行字符。
答案 4 :(得分:0)
我发现用“\ r \ n”替换所有“\ n”字符会产生正确的结果,服务器可以看到新行。