首页 > 代码库 > .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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。