首页 > 代码库 > .NET2.0下JavaScript的Encode

.NET2.0下JavaScript的Encode

FrameWork2.0下JavaScriptStringEncode函数不存在,参照微软4.5.2的开源代码自己写一个

  1 Imports Microsoft.VisualBasic  2 Imports System.Globalization  3 Imports App_Code.Zebra.Commons  4   5 Namespace App_Code.Zebra.BusinessLogic.Commons  6     Public Class HtmlOutputEscape  7   8         ‘‘‘ <summary>  9         ‘‘‘ 文字列から HTML エンコードされた文字列への最小限の変換を行います 10         ‘‘‘ </summary> 11         ‘‘‘ <param name="value">エスケープする文字列</param> 12         ‘‘‘ <returns>エスケープされた文字列</returns> 13         ‘‘‘ <remarks></remarks> 14         Public Shared Function HtmlAttributeEncode(ByVal value As String) As String 15             Return HttpUtility.HtmlAttributeEncode(value) 16         End Function 17  18         ‘‘‘ <summary> 19         ‘‘‘ 文字列を、HTML エンコードされた文字列に変換します 20         ‘‘‘ </summary> 21         ‘‘‘ <param name="value">エスケープする文字列</param> 22         ‘‘‘ <returns>エスケープされた文字列</returns> 23         ‘‘‘ <remarks></remarks> 24         Public Shared Function HtmlEncode(ByVal value As String) As String 25             Return HttpUtility.HtmlEncode(value) 26         End Function 27  28         ‘‘‘ <summary> 29         ‘‘‘ URL 文字列をエンコードします。 30         ‘‘‘ </summary> 31         ‘‘‘ <param name="value">エスケープするURL</param> 32         ‘‘‘ <returns>エスケープされたURL</returns> 33         ‘‘‘ <remarks></remarks> 34         Public Shared Function UrlEncode(ByVal value As String) As String 35             Return HttpUtility.UrlEncode(value) 36         End Function 37  38         ‘‘‘ <summary> 39         ‘‘‘ JavaScriptをエンコードします。 40         ‘‘‘ </summary> 41         ‘‘‘ <param name="value">エスケープするデータ</param> 42         ‘‘‘ <returns>エスケープされたデータ</returns> 43         ‘‘‘ <remarks></remarks> 44         Public Shared Function JavaScriptStringEncode(ByVal value As String) As String 45             If String.IsNullOrEmpty(value) Then 46                 Return String.Empty 47             End If 48  49             Dim b As StringBuilder = Nothing 50             Dim startIndex As Integer = 0 51             Dim count As Integer = 0 52  53             Dim i As Integer 54             For i = 0 To value.Length - 1 55                 Dim c As Char = value(i) 56  57                 If CharRequiresJavaScriptEncoding(c) Then 58                     エンコード必要場合、メモリに格納できる最大文字数再定義します。 59                     If b Is Nothing Then 60                         b = New StringBuilder(value.Length + 5) 61                     End If 62  63                     If count > 0 Then 64                         b.Append(value, startIndex, count) 65                     End If 66  67                     startIndex = i + 1 68                     count = 0 69                 End If 70  71                 Select Case c 72                     Case "\r" 73                         b.Append("\\r") 74                     Case "\t" 75                         b.Append("\\t") 76                     Case """" 77                         b.Append("""""") 78                     Case "\\" 79                         b.Append("\\\\") 80                     Case "\n" 81                         b.Append("\\n") 82                     Case "\b" 83                         b.Append("\\b") 84                     Case "\f" 85                         b.Append("\\f") 86                     Case Else 87                         If CharRequiresJavaScriptEncoding(c) Then 88                             AppendCharAsUnicodeJavaScript(b, c) 89                         Else 90                             count += 1 91                         End If 92                 End Select 93             Next 94  95             If b Is Nothing Then 96                 Return value 97             End If 98  99             If count > 0 Then100                 b.Append(value, startIndex, count)101             End If102 103             Return b.ToString()104         End Function105 106         Public Shared Function CharRequiresJavaScriptEncoding(ByVal value As Char) As Boolean107             Dim strValue As String = value.ToString108             \u2028、\u2029、\u0085 = \r109             If strValue = http://www.mamicode.com/"\r" Or _110                strValue = http://www.mamicode.com/"""" Or _111                strValue = http://www.mamicode.com/"\\" Or _112                strValue = http://www.mamicode.com/"" Or _113                strValue = http://www.mamicode.com/"<" Or _114                strValue = http://www.mamicode.com/">" Or _115                strValue = http://www.mamicode.com/"&" Or _116                Convert.ToInt32(value) < 32 Then117                 Return True118             End If119             Return False120         End Function121 122         Public Shared Sub AppendCharAsUnicodeJavaScript(ByVal builder As StringBuilder, ByVal c As Char)123             0x01→\u0001124             builder.Append("\\u")125             builder.Append((Convert.ToInt32(c)).ToString("x4", CultureInfo.InvariantCulture))126         End Sub127         128     End Class129 End Namespace

 

.NET2.0下JavaScript的Encode