从ftp服务器下载swift文件并从utf 16(xml文件)编码

时间:2015-06-02 09:20:52

标签: xml swift encoding ftp

您好我需要使用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)

2 个答案:

答案 0 :(得分:0)

您是否尝试使用NSString进行转换:

let str = NSString(bytes: utf16, length: utf16.count, encoding: NSUTF16StringEncoding)

其中utf16是您下载的字符串

答案 1 :(得分:0)

xml下载和编码有效。错误发生在我的XMLParser上。 谢谢大家的帮助