このコードを使用して、文字列を ISO8859-1 に変換しています
baseurl = "http://myurl.com/mypage.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.QueryString.Add("usuario", user)
client.QueryString.Add("password", pass)
client.QueryString.Add("ruta", 2)
client.QueryString.Add("remitente", Me.txtRemite.Text)
If Me.chkPRefijo.Checked = True Then
client.QueryString.Add("destinatarios", Me.LookUpEdit1.EditValue & Me.dtsMvl.Tables(0).Rows(x).Item("movil"))
Else
client.QueryString.Add("destinatarios", Me.dtsMvl.Tables(0).Rows(x).Item("movil"))
End If
textoSms = Me.mmTexto.Text
textoSms = System.Web.HttpUtility.UrlEncode(textoSms, System.Text.Encoding.GetEncoding("ISO-8859-1"))
client.QueryString.Add("mensaje", textoSms)
client.QueryString.Add("reporte", 1)
data = client.OpenRead(baseurl)
reader = New StreamReader(data)
s = reader.ReadToEnd()
data.Close()
reader.Close()
しかし問題は、ユーザーがこの文字を書くときです: +
例:
ユーザーは私のアプリに書き込みます:
定価80+消費税
アプリでエンコードされた文字列と、この文字列がプロバイダーに送信されます。
価格+80%2bVAT
モバイルで受信した SMS:
価格 80 付加価値税
編集
URL にいくつかの変数を渡す必要があります。SMS を送信するプログラムがあり、変数を URL (URL プロバイダー SMS システム) に送信する必要があるためです。文字列 (ユーザーがプログラムに書き込むメッセージ モバイル) は、エンコードして送信する必要があります (ISO 8859-1)。
たとえば、PHP の次のコードは問題なく動作します。
$texto=urlencode($textoOriginal);
このコードは、次の文字列を変換して返します。
価格+80%2BVAT
編集2
私のコードは間違っていると思います。"price+80%2BVAT" でエンコードされた同じ文字列を送信すると、VB.NET コードでは実行されず、PHP では正常に実行されるのはなぜですか? 同じエンコードされた文字列です。