|
| Autor |
Nachricht |
sollniss Überflieger

Anmeldedatum: 01.05.2008 Beiträge: 699
|
Zeichensatzkonvertierung
Verfasst am: 15.07.2008, 16:49 |
|
|
Also, ich hol mir mit der MethodeVisual Basic: [code] Dim req As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest) Dim res As HttpWebResponse = CType(req.GetResponse, HttpWebResponse) Dim str As New StreamReader(res.GetResponseStream)[/code]einen Quelltext.
Da ich mir Quelltexte von verschiedenen Seiten hole, liegen diese manchmal in verschiedenen Zeichensätzten (UTF-8, ASCII, etc.) vor. Nun möchte ich erstmal den Zeichensatz rausfinden, und danach in einen bestimmten Zeichensatz konvertieren. Leider hab ich davon überhaubt keine Ahnung. ^^
Kann mir jemand erklären wie ich System.Text.Encoding.Convert benutze, und wie ich den Zeichensatz eines Quelltext rausfinde?
Mein Ansatz:Visual Basic: [code] Private Function GetSourcecode(ByVal URL As String) As String Application.DoEvents() Dim req As HttpWebRequest = CType(WebRequest.Create(URL), HttpWebRequest) Dim res As HttpWebResponse = CType(req.GetResponse, HttpWebResponse) Dim str As New StreamReader(res.GetResponseStream, System.Text.Encoding.Default)
str = System.Text.Encoding.Convert(System.Text.Encoding.Default, System.Text.Encoding.UTF8, str)
Return str.ReadToEnd End Function[/code]Der Wert vom Typ "System.IO.StreamReader" kann nicht in "1-dimensionales Array von Byte" konvertiert werden. |
----------------------------------------------------------------
Habs jetzt so, allerdings bekomm ich da das selbe Ergebnis, als wenn ichs ganz weglasse, dh. es wird nix konvertiert.
Visual Basic: [code]Imports System.Text Private Function GetSourcecode(ByVal URL As String) As String Application.DoEvents() Dim req As HttpWebRequest = CType(WebRequest.Create(URL), _ HttpWebRequest) Dim res As HttpWebResponse = CType(req.GetResponse, HttpWebResponse) Dim str As New StreamReader(res.GetResponseStream, Encoding.Default) Dim enDefault As Encoding = Encoding.Default Dim enUTF8 As Encoding = Encoding.UTF8 Dim defBytes As Byte() = enDefault.GetBytes(str.ReadToEnd) Dim utfBytes As Byte() = Encoding.Convert(enDefault, enUTF8, defBytes) Dim utfChars(enUTF8.GetCharCount(utfBytes, 0, utfBytes.Length)) As Char enUTF8.GetChars(utfBytes, 0, utfBytes.Length, utfChars, 0) Dim utfString As New String(utfChars) Return utfString End Function[/code] |
|
| |
|
 |
Marduk Überflieger

Anmeldedatum: 16.04.2008 Beiträge: 374
|
Verfasst am: 16.07.2008, 18:49 |
|
|
Zeichenkodierung steht im -Tag drin.
Habs jetzt so, allerdings bekomm ich da das selbe Ergebnis, als wenn ichs ganz weglasse, dh. es wird nix konvertiert. |
Das Ergebnis soll doch auch gleich sein. A in Unicode ist doch auch ein A in ASCII Beide A´s haben halt unterschiedliche Codes 41(Uni-UTF- <-> 65(ASCII)
Ich versteh aber grad nicht für was du den Source in eine Kodierung umwandeln willst. Die sind eigentlich nur für den Browser gedacht, dass er die erkennt und je nach dem die entsprechenden Sonderzeichen setzten kann.
|
|