diff --git a/encode_string.go b/encode_string.go index f9ec629..bd3b140 100644 --- a/encode_string.go +++ b/encode_string.go @@ -11,7 +11,7 @@ import ( // All values are true except for the ASCII control characters (0-31), the // double quote ("), the backslash character ("\"), HTML opening and closing // tags ("<" and ">"), and the ampersand ("&"). -var htmlSafeSet = [utf8.RuneSelf]bool{ +var htmlSafeSet = [256]bool{ ' ': true, '!': true, '"': false, @@ -108,6 +108,134 @@ var htmlSafeSet = [utf8.RuneSelf]bool{ '}': true, '~': true, '\u007f': true, + 0x80: false, + 0x81: false, + 0x82: false, + 0x83: false, + 0x84: false, + 0x85: false, + 0x86: false, + 0x87: false, + 0x88: false, + 0x89: false, + 0x8a: false, + 0x8b: false, + 0x8c: false, + 0x8d: false, + 0x8e: false, + 0x8f: false, + 0x90: false, + 0x91: false, + 0x92: false, + 0x93: false, + 0x94: false, + 0x95: false, + 0x96: false, + 0x97: false, + 0x98: false, + 0x99: false, + 0x9a: false, + 0x9b: false, + 0x9c: false, + 0x9d: false, + 0x9e: false, + 0x9f: false, + 0xa0: false, + 0xa1: false, + 0xa2: false, + 0xa3: false, + 0xa4: false, + 0xa5: false, + 0xa6: false, + 0xa7: false, + 0xa8: false, + 0xa9: false, + 0xaa: false, + 0xab: false, + 0xac: false, + 0xad: false, + 0xae: false, + 0xaf: false, + 0xb0: false, + 0xb1: false, + 0xb2: false, + 0xb3: false, + 0xb4: false, + 0xb5: false, + 0xb6: false, + 0xb7: false, + 0xb8: false, + 0xb9: false, + 0xba: false, + 0xbb: false, + 0xbc: false, + 0xbd: false, + 0xbe: false, + 0xbf: false, + 0xc0: false, + 0xc1: false, + 0xc2: false, + 0xc3: false, + 0xc4: false, + 0xc5: false, + 0xc6: false, + 0xc7: false, + 0xc8: false, + 0xc9: false, + 0xca: false, + 0xcb: false, + 0xcc: false, + 0xcd: false, + 0xce: false, + 0xcf: false, + 0xd0: false, + 0xd1: false, + 0xd2: false, + 0xd3: false, + 0xd4: false, + 0xd5: false, + 0xd6: false, + 0xd7: false, + 0xd8: false, + 0xd9: false, + 0xda: false, + 0xdb: false, + 0xdc: false, + 0xdd: false, + 0xde: false, + 0xdf: false, + 0xe0: false, + 0xe1: false, + 0xe2: false, + 0xe3: false, + 0xe4: false, + 0xe5: false, + 0xe6: false, + 0xe7: false, + 0xe8: false, + 0xe9: false, + 0xea: false, + 0xeb: false, + 0xec: false, + 0xed: false, + 0xee: false, + 0xef: false, + 0xf0: false, + 0xf1: false, + 0xf2: false, + 0xf3: false, + 0xf4: false, + 0xf5: false, + 0xf6: false, + 0xf7: false, + 0xf8: false, + 0xf9: false, + 0xfa: false, + 0xfb: false, + 0xfc: false, + 0xfd: false, + 0xfe: false, + 0xff: false, } // safeSet holds the value true if the ASCII character with the given array @@ -222,8 +350,7 @@ func (e *Encoder) encodeEscapedString(s string) { // write string, the fast path, without utf8 and escape support i := 0 for ; i < valLen; i++ { - c := s[i] - if c >= utf8.RuneSelf || !htmlSafeSet[c] { + if !htmlSafeSet[s[i]] { break } }