HTMLEncoder / HTMLDecoder
Posted: Thu Feb 05, 2009 9:03 pm
To complement UrlDecoder / UrlEncoder.
Encode / decode special chars from / to HTML.
Encode / decode special chars from / to HTML.
Code: Select all
EnableExplicit
DataSection
HTML_DECODER_DATA:
Data.s ~"\"" : Data.i 34
Data.s "&" : Data.i 38
Data.s "<" : Data.i 60
Data.s ">" : Data.i 62
Data.s " " : Data.i 160
Data.s "¡" : Data.i 161
Data.s "¢" : Data.i 162
Data.s "£" : Data.i 163
Data.s "¤" : Data.i 164
Data.s "¥" : Data.i 165
Data.s "¦" : Data.i 166
Data.s "§" : Data.i 167
Data.s "¨" : Data.i 168
Data.s "©" : Data.i 169
Data.s "ª" : Data.i 170
Data.s "«" : Data.i 171
Data.s "¬" : Data.i 172
Data.s "­" : Data.i 173
Data.s "®" : Data.i 174
Data.s "¯" : Data.i 175
Data.s "°" : Data.i 176
Data.s "±" : Data.i 177
Data.s "²" : Data.i 178
Data.s "³" : Data.i 179
Data.s "´" : Data.i 180
Data.s "µ" : Data.i 181
Data.s "¶" : Data.i 182
Data.s "·" : Data.i 183
Data.s "¸" : Data.i 184
Data.s "¹" : Data.i 185
Data.s "º" : Data.i 186
Data.s "»" : Data.i 187
Data.s "¼" : Data.i 188
Data.s "½" : Data.i 189
Data.s "¾" : Data.i 190
Data.s "¿" : Data.i 191
Data.s "À" : Data.i 192
Data.s "Á" : Data.i 193
Data.s "Â" : Data.i 194
Data.s "Ã" : Data.i 195
Data.s "Ä" : Data.i 196
Data.s "Å" : Data.i 197
Data.s "Æ" : Data.i 198
Data.s "Ç" : Data.i 199
Data.s "È" : Data.i 200
Data.s "É" : Data.i 201
Data.s "Ê" : Data.i 202
Data.s "Ë" : Data.i 203
Data.s "Ì" : Data.i 204
Data.s "Í" : Data.i 205
Data.s "Î" : Data.i 206
Data.s "Ï" : Data.i 207
Data.s "Ð" : Data.i 208
Data.s "Ñ" : Data.i 209
Data.s "Ò" : Data.i 210
Data.s "Ó" : Data.i 211
Data.s "Ô" : Data.i 212
Data.s "Õ" : Data.i 213
Data.s "Ö" : Data.i 214
Data.s "×" : Data.i 215
Data.s "Ø" : Data.i 216
Data.s "Ù" : Data.i 217
Data.s "Ú" : Data.i 218
Data.s "Û" : Data.i 219
Data.s "Ü" : Data.i 220
Data.s "Ý" : Data.i 221
Data.s "Þ" : Data.i 222
Data.s "ß" : Data.i 223
Data.s "à" : Data.i 224
Data.s "á" : Data.i 225
Data.s "â" : Data.i 226
Data.s "ã" : Data.i 227
Data.s "ä" : Data.i 228
Data.s "å" : Data.i 229
Data.s "æ" : Data.i 230
Data.s "ç" : Data.i 231
Data.s "è" : Data.i 232
Data.s "é" : Data.i 233
Data.s "ê" : Data.i 234
Data.s "ë" : Data.i 235
Data.s "ì" : Data.i 236
Data.s "í" : Data.i 237
Data.s "î" : Data.i 238
Data.s "ï" : Data.i 239
Data.s "ð" : Data.i 240
Data.s "ñ" : Data.i 241
Data.s "ò" : Data.i 242
Data.s "ó" : Data.i 243
Data.s "ô" : Data.i 244
Data.s "õ" : Data.i 245
Data.s "ö" : Data.i 246
Data.s "÷" : Data.i 247
Data.s "ø" : Data.i 248
Data.s "ù" : Data.i 249
Data.s "ú" : Data.i 250
Data.s "û" : Data.i 251
Data.s "ü" : Data.i 252
Data.s "ý" : Data.i 253
Data.s "þ" : Data.i 254
Data.s "ÿ" : Data.i 255
Data.s "" : Data.i 0
EndDataSection
Procedure.i IsDigit (sChar.s)
Protected flgIsDigit = #False
Protected iChar = Asc(sChar)
If iChar >= '0' And iChar <= '9' : flgIsDigit = #True : EndIf
ProcedureReturn flgIsDigit
EndProcedure
Procedure.i IsAllDigit (sString.s)
Protected flgIsAllDigit = #False
Protected iLen = Len(sString)
Protected k
If iLen
flgIsAllDigit = #True
For k = 1 To iLen
If IsDigit(Mid(sString, k, 1)) = #False
flgIsAllDigit = #False
Break
EndIf
Next
EndIf
ProcedureReturn flgIsAllDigit
EndProcedure
Procedure.s HTMLDecoder (sEncodedString.s)
Protected sHTMLEntity.s, iHTMLChar, sOutString.s = sEncodedString
Protected sTemp.s, iStart, iEnd
Restore HTML_DECODER_DATA: Read.s sHTMLEntity: Read.i iHTMLChar
Repeat
sOutString = ReplaceString(sOutString, sHTMLEntity, Chr(iHTMLChar))
Read.s sHTMLEntity: Read.i iHTMLChar
Until iHTMLChar = 0
; look for something similar to "'" or "'"
iStart = FindString(sOutString, "&#", 1)
iEnd = FindString(sOutString, ";", iStart)
If (iStart > 0) And (iEnd > 0) ; found something
sTemp = Mid(sOutString, iStart + 2, iEnd - iStart - 2)
If IsAllDigit(sTemp)
sOutString = ReplaceString(sOutString, "&#" + sTemp + ";", Chr(Val(sTemp)))
EndIf
EndIf
ProcedureReturn sOutString
EndProcedure
Procedure.s HTMLEncoder (sString.s)
Protected sHTMLEntity.s, iHTMLChar, sOutString.s = sString
Restore HTML_DECODER_DATA: Read.s sHTMLEntity: Read.i iHTMLChar
Repeat
sOutString = ReplaceString(sOutString, Chr(iHTMLChar), sHTMLEntity)
Read.s sHTMLEntity: Read.i iHTMLChar
Until iHTMLChar = 0
ProcedureReturn sOutString
EndProcedure