私はこのようなキャラクターのリストを持っています:
ホワイトリスト: "ABCDEFGHIJKLMNOPQRSTUVQXYZ&,;"()@ $%-_+。 "
これらの文字を除く文字列からすべての文字をエンコードする関数を作成したいと思います。
私はこのようなキャラクターのリストを持っています:
ホワイトリスト: "ABCDEFGHIJKLMNOPQRSTUVQXYZ&,;"()@ $%-_+。 "
これらの文字を除く文字列からすべての文字をエンコードする関数を作成したいと思います。
の機能を実際に変更したい場合はHttpUtility.HtmlEncode
、独自のを作成する必要がありますHttpEncoder
。
HttpEncoderクラス-備考セクションでは、、、、およびでHttpEncoder
デフォルトでHttpUtility
を使用するようにWebサイトを設定する方法について説明します。HttpServerUtility
HttpResponseHeader
編集
「HttpUtilityのホワイトリスト文字を変更できますか?」への応答
いいえ。内部的には、デフォルトのHttpEncoder
呼び出しの実装でWebUtility.HtmlEncode
あり、次に呼び出しますWebUtility.IndexOfHtmlEncodingChars
。このメソッドはハードコードされた値のセットを使用するため、ホワイトリスト文字を変更することはできません。HttpEncoder
独自のクラスを作成する必要があります。
正直なところ、これは本当に悪い考えだと思いますが、挑戦のためだけに...
Public Function fnsHTMLEncodeExcept(pvsStringToEncode As String, pvsCharactersNotToEncode As String) As String
Dim voEncodedString As New Text.StringBuilder
For viPosition As Integer = 0 To (pvsStringToEncode.Length - 1)
Dim vsChar As String = Mid(pvsStringToEncode, viPosition, 1)
If InStr(pvsCharactersNotToEncode, vsChar) > 0 Then voEncodedString.Append(vsChar) Else voEncodedString.Append(HttpUtility.HtmlEncode(vsChar))
Next
Return voEncodedString.ToString
End Function
ただし、HtmlDecodeをどのように実行するかについてのアイデアはありません...この種の関数が必要な理由については、わざわざ質問しません。