码迷,mamicode.com
首页 > 编程语言 > 详细

.NET2.0下JavaScript的Encode

时间:2015-01-06 11:46:59      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:

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 Then
100                 b.Append(value, startIndex, count)
101             End If
102 
103             Return b.ToString()
104         End Function
105 
106         Public Shared Function CharRequiresJavaScriptEncoding(ByVal value As Char) As Boolean
107             Dim strValue As String = value.ToString
108             \u2028、\u2029、\u0085 = \r
109             If strValue = "\r" Or _
110                strValue = """" Or _
111                strValue = "\\" Or _
112                strValue = "" Or _
113                strValue = "<" Or _
114                strValue = ">" Or _
115                strValue = "&" Or _
116                Convert.ToInt32(value) < 32 Then
117                 Return True
118             End If
119             Return False
120         End Function
121 
122         Public Shared Sub AppendCharAsUnicodeJavaScript(ByVal builder As StringBuilder, ByVal c As Char)
123             0x01→\u0001
124             builder.Append("\\u")
125             builder.Append((Convert.ToInt32(c)).ToString("x4", CultureInfo.InvariantCulture))
126         End Sub
127         
128     End Class
129 End Namespace

 

.NET2.0下JavaScript的Encode

标签:

原文地址:http://www.cnblogs.com/BIGFOOT/p/4205506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!