将UTF-8网页下载到String中

时间:2011-08-08 13:48:52

标签: vb.net string utf-8

这是一个新手问题。

我阅读the following question下载一个内容以UTF-8编码的网页。然后页面被转换为字节数组,而我正在使用String来从页面中读取内容。

我需要将UTF-8转换为Latin1 / ANSI,因为这就是RichText和MessageBox似乎使用的东西(我正在变得有趣的角色)。

是否有更直接的方式来下载UTF-8页面并将其转换为ANSI / Latin1?

谢谢。


编辑:当callig MessageBox时,重音字符未按预期显示:

内容= CStr(e.Result)

'ThéÃtre,Métro   MessageBox.Show(内容)

1 个答案:

答案 0 :(得分:4)

.NET中的

String一直使用unicode,因此您不必将其转换为。重要的是,当您下载页面时,您需要确保标记从 UTF-8源加载数据

MSDN有一个关于将UTF-8编码数据加载到字符串中的示例:

Private Function ReadAuthor(binary_file As Stream) As String
     Dim encoding As System.Text.Encoding = System.Text.Encoding.UTF8
     ' Read string from binary file with UTF8 encoding
     Dim buffer(30) As Byte
     binary_file.Read(buffer, 0, 30)
     Return encoding.GetString(buffer)
End Function

更新

使用WebClient.DownloadString时,会自动转换为字符串,并且不需要与上面类似的代码。自动转换使用WebClient.Encoding指定的编码,因此应该通过将WebClient对象的编码属性设置为UTF-8来解决问题:

client.Encoding = System.Text.Encoding.UTF8