2017-11-06 1 views
0

웹 사이트에서 출력 한 "일반 텍스트"를 다운로드하려면 webclient downloaddata를 사용하고 있습니다.vb .net webclient 새 줄을 포함한 다운로드 데이터

모든 것이 효과적이며 모든 텍스트를 새 txt에 저장합니다. 제 문제는 텍스트 서식입니다. 예를 들어

,이 같은 웹 사이트의 출력 (새로운 라인의 각 정보) :

Name - John Doe 
Age - 33 
City - New York 

하지만 파일의 데이터가,이 같은 저장 것을 저장할 때 :

Name - John DoeAge - 33City - New York 

사람을 웹 페이지에 표시된대로 파일을 쓰게 만들 수있는 방법을 알고 있습니까? 지금

내 코드 :

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
    For value As Integer = 1 To TextBox3.Text 
     Dim WebClient As WebClient = New WebClient() 
     WebClient.Encoding = System.Text.Encoding.Unicode 
     Dim sourceString As Byte() = New System.Net.WebClient().DownloadData(TextBox1.Text & value & TextBox2.Text) 
     Dim htmlCode = Encoding.UTF8.GetString(sourceString) 
     Dim filepath = "C:\Project\" & value & ".txt" 
     System.IO.File.AppendAllText(filepath, htmlCode) 
     BackgroundWorker1.ReportProgress(value) 
    Next 
End Sub 

답변

1

당신은 Word 또는 메모장 ++와 같은 숨겨진 문자를 표시하는 텍스트 편집기에서받은 문자열을 확인 해보세요. 대신 캐리지 리턴 라인 피드가되어야하는 줄 바꿈 문자가 표시 될 수 있습니다. 그럴 경우이 형식으로 변환 할 수 있습니다.

htmlCode = htmlCode.Replace(vbLF, vbCrLf) 
0

다운로드 된 파일은 실제로 여러 라인을 가지고 있지만, 당신이 그들을 볼 수있는 Windows에 내장 된 메모장 응용 프로그램 (도 정기적으로 TextBox에서). 두 단지 CRLF 형식의 행 끝 감지 (캐리지 리턴을 + 라인 먹이) 때문에 많은 웹 서버는 리눅스로 (유닉스 나 유닉스 계열 시스템에 내장되어 있기 때문에 비록

이것에 대한 이유는있다) 그들은 Lf (줄 바꿈) 만 줄 끝으로 사용합니다. 일부 서버는 업로드시 텍스트 파일을 Lf 형식으로 변환하기도합니다. 즉, 파일은 원래 Windows의 줄 끝을 가질 수 있지만 업로드 할 때 서버는 파일을 Unix 형식으로 변환합니다.

이 경우 할 수있는 일은 모든 행 끝자리를 CrLf으로 바꾸어 직접 변환하는 것입니다. Regex은 모든 행이 끝나는 것을 바꿉니다 (모두 똑같은지 확인하기 위해 올바른 행 이어도).

Dim htmlCode = Regex.Replace(Encoding.UTF8.GetString(sourceString), "\r\n|\r|\n", Environment.NewLine) 
관련 문제