私は、支払いプロバイダ(epdq)と統合されたプロジェクトに取り組んでいます。彼らは、成功した支払いの変数をクエリーストリングに戻して、私たちのウェブサイトに渡します。返されたクエリ文字列の一部には、顧客名が含まれています。私たちは誰かが '£'のような特殊文字を入力した場合、クエリーストリングのパラメータは次のように返されることに気付きました:CN = Mr +%A3Test + TestC#のUrlDecodeとASCII文字
£シンボルのUrlEncodedの値は%C2%A3。
問合せ文字列に戻された値をデコードして真の値(この例では£記号)を取得する必要があるため、問題が発生します。私はISO-8859-1とUTF-8の両方でそれを試してみた
foreach (var key in querystring.Keys)
{
var enc = System.Text.Encoding.GetEncoding("iso-8859-1");
Logger.Debug(HttpUtility.ParseQueryString(querystring.ToString(), enc)[key.ToString()]);
Logger.Debug(HttpUtility.UrlDecode(querystring.Get(key.ToString()), enc));
}
:
私はそれを行うための2種類の方法を試してみました。どちらも文字列を 'Mr Test Test'に変換しますが、明らかに正しく変換できなかった文字です。
正規表現を使用し、文字列を検索して顧客が入力できる可能性のある文字列をすべて検索し、それらをASCII相当文字列から変換します(ASCII%A3は£記号です)これ以外にどこに行くべきか分からない。
誰でも任意のポインタを提供できますか?事前にお時間を
おかげ
残念ながら、それはまったく不思議ではないようです - それはまだそれが認識する文字に変換されません... – dotdev
このエンコーディングを試したときに得た結果は何ですか? –
前と同じ - 認識できない文字ui.e. ?三角形の中に.... – dotdev