将UTF8字符串编码为ISO-8859-1字符串(VB.NET)

aco*_*aco 3 vb.net utf-8 iso-8859-1 character-encoding

我需要使用VB.NET将UTF8字符串转换为ISO-8859-1字符串.

任何例子?


强调文本我尝试过拉丁语功能而不是运行.我收到错误的字符串.

我的情况是我需要使用API​​发送短信.

现在我有这个代码:

        baseurl = "http://www.myweb.com/api/sendsms.php"
        client = New WebClient
        client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
        client.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1")
        client.QueryString.Add("user", user)
        client.QueryString.Add("password", pass)
        client.QueryString.Add("alias", myAlias)
        client.QueryString.Add("dest",  mobile)
        textoSms = Me.mmTexto.Text
        textoSms = System.Web.HttpUtility.UrlEncode(textoSms)
        client.QueryString.Add("message", textoSms)
        data = client.OpenRead(baseurl)
        reader = New StreamReader(data)
        s = reader.ReadToEnd()
        data.Close()
        reader.Close()
Run Code Online (Sandbox Code Playgroud)

但不是运行...我收到不正确的消息.例如

如果我写:mañana返回maa ana

如果我写aigüa返回aiga

Jon*_*eet 8

怎么样:

Dim converted as Byte() = Encoding.Convert(utf8, Encoding.UTF8, _
                                           Encoding.GetEncoding(28591))
Run Code Online (Sandbox Code Playgroud)

这假设当你说"UTF8字符串"时你的意思是"二进制数据,它是某些文本的UTF-8表示".如果您的意思是其他,请注明:)

请注意,ISO-8859-1仅占完整Unicode的一小部分.IIRC,你最终会得到"?" 对于ISO-8859-1中没有的源数据中的任何字符.