你好,我需要從快速的ftp服務器下載一個xml文件。 下載工作,我試着用UTF8編碼的xml文件。 但是,如果我下載了我需要的具有utf 16編碼的文件,我得到了一個有很多0字節的大字節數組。 當我嘗試編碼並保存它。它保存了一個與原始文件相當大的文件。 我已經嘗試刪除0字節並進行編碼並將其保存爲這樣。 結果是編碼不工作,我得到類似的東西從ftp服務器快速下載文件,並從utf 16(xml文件)編碼它
!!!!!結果:可選(䐼瑡湥ਾ㰉敓汩㹥ऊ㰉敓汩湥慢卷摯㹥䉚ぃ〰 〰〰㤷⼼敓汩湥慢卷摯㹥ऊ㰉牐橯步湴浵敭㹲ㄱ〲〰⼼牐橯步湴浵敭㹲ऊ㰉牐橯步扴獥檔敲擴湵㹧䉅⁚䅄⁇劑〲`㉚䄭晵慢汵湩斆䱐䠠湵㱤倯潲敪瑫敢捳牨楥畢杮ਾउ䈼獥檔敲擴湵㹧䐲䐠瑥楡㱬䈯獥檔敲擴
這是怎麼了我編碼字節數組
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在mo換貨和原始文件的大小是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)
NSXMLParser(或任何XML解析器)應該自動處理編碼... –
也許對你來說是一個好主意,爲我們翻譯錯誤。 – Icaro
@IcaroNZ它不是一個錯誤,它是當我嘗試對刪除0字節的字節數組進行編碼時得到的結果。 – Ailer