在项目测试阶段,测试人员会输入一些特殊字符,比如:<table>、<./或<这样的字符时,页面就会出现错误, 如果是导出,导出的Excel也会出现问题,或者直接输出的页面会把用户输入的<、>、&及 都转化成<、>、&及空格,原因是用java代码直接取的并没有对特殊字符做转义。
     因为Html中的<, >,&有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列。

   & 的转义序列为 & amp 或 & #38;
   < 的转义序列为 & lt; & #60;
   > 的转义序列为 & gt; & #62;
  前者为字符转义序列,后者为数字转义序列。
  例如 & lt; font >显示为<font>,若直接写为则被认为是一个链接签。
  需要说明的是:
    a. 转义序列各字符间不能有空格;
    b. 转义序列必须以“;”结束;
    c. 单独的&不被认为是转义开始。
    d. 区分大小写  
     另一个需要转义的字符是双引号””,它的转义序列为"或"
     这里需要特殊注意的是一定要对&进行转义,有的朋友只对<、>甚至引号转义,但并没有对&进行转义,&是Html转义字符的开始,如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以必须要对&进行转义。
解决方法是定义个工具类Tools。

/**
     * 替换一个字符串中的某些指定字符
     * @param strData String 原始字符串
     * @param regex String 要替换的字符串
     * @param replacement String 替代字符串
     * @return String 替换后的字符串
     */
static String replaceString(String strData, String regex,
   9:             String replacement)
  10:     {
null)
  12:         {
null;
  14:         }
int index;
  16:         index = strData.indexOf(regex);
;
if (index >= 0)
  19:         {
while (index >= 0)
  21:             {
  22:                 strNew += strData.substring(0, index) + replacement;
  23:                 strData = strData.substring(index + regex.length());
  24:                 index = strData.indexOf(regex);
  25:             }
  26:             strNew += strData;
return strNew;
  28:         }
return strData;
  30:     }
  31:  
/**
    * 替换字符串中特殊字符
     */
static String encodeString(String strData)
  36:     {
null)
  38:         {
;
  40:         }
);
);
);
);
);
return strData;
  47:     }
  48:  
/**
     * 还原字符串中特殊字符
     */
static String decodeString(String strData)
  53:     {
);
);
);
);
);
return strData;
  60:     }

相关文章:

  • 2021-11-18
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-08
猜你喜欢
  • 2022-12-23
  • 2021-05-20
  • 2021-06-08
  • 2021-10-04
  • 2021-11-18
  • 2021-11-18
相关资源
相似解决方案