您好我需要使用swift从ftp服务器下载一个xml文件。 下载工作,我尝试使用以utf8编码的xml文件。 但是,如果我下载了我需要的具有utf 16编码的文件,我得到了一个包含许多0字节的大字节数组。 当我尝试编码并保存它。它会保存一个比原始文件更大的文件。 我已经尝试删除0字节并编码并保存它。 结果是编码不起作用,我得到类似的东西
!!!!!结果:可选(Optional瑡湥ਾ敚汩ऊ㰉敚湥湥慢慢湥湥湥㤷敚湥湥湥慢卷挚ऊ橯橯橯湴湴湴湴湴湴敭㹲ㄱ〲〰⼼牐橯步湴浵敭㹲ऊ㰉牐橯步扴獥档敲扩湵㹧䉅⁚䅄⁇剂〲`㉚䄭晵慢汵湩敩䱐䠠湵㱤倯潲敪瑫敢捳牨楥毕杮ਾउ䈼獥档敲扩湵㹧䐲䐠瑥楡㱬䈯獥档敲扩
这就是我对字节数组进行编码的方式
let result = NSString(bytes: bytes, length: bufferSize, encoding: encoding)
println("!!!Groesse: \(bufferSize) \n")
println("!!!!!Result: \(result)")
if result != nil
{
return result!
}
else
{
return ""
}
我的buffersize目前为9999999,原始文件大小为148440。 这是下载功能
let ftpReadStream = self.createFTPReadStream(fileName)
CFReadStreamOpen(ftpReadStream)
var numBytesRead = 0
var buffer = [UInt8](count: bufferSize, repeatedValue: 0)
do
{
//TODO: Buffer überlauf?
numBytesRead = CFReadStreamRead(ftpReadStream, &buffer, bufferSize)
}
while( numBytesRead > 0 );
CFReadStreamClose(ftpReadStream)
/*var data = NSData(bytes: buffer, length: bufferSize)
data.writeToFile("/Users/nilskunkel/KirchnerTimeDaten/XMLs/Test.xml", options: NSDataWritingOptions.DataWritingAtomic, error: nil)*/
var data = self.removePadding(buffer)
self.createStringFromByteArray(buffer, encoding: encoding)
return self.createStringFromByteArray(data, encoding: encoding)
答案 0 :(得分:0)
您是否尝试使用NSString进行转换:
let str = NSString(bytes: utf16, length: utf16.count, encoding: NSUTF16StringEncoding)
其中utf16是您下载的字符串
答案 1 :(得分:0)
xml下载和编码有效。错误发生在我的XMLParser上。 谢谢大家的帮助