首页 > Web开发 > 详细

对HTML转码

时间:2015-12-07 02:24:56      阅读:212      评论:0      收藏:0      [点我收藏+]

使用java 对HTML代码进行转码

/**
	 * 去除HTML字串中的控制字符及不可视字符
	 *
	 * @param str
	 *            HTML字串
	 * @return 返回的字串
	 */
	public static String escapeHTML(String str) {
		int length = str.length();
		int newLength = length;
		boolean someCharacterEscaped = false;
		for (int i = 0; i < length; i++) {
			char c = str.charAt(i);
			int cint = 0xffff & c;
			if (cint < 32)
				switch (c) {
				case 11:
				default:
					newLength--;
					someCharacterEscaped = true;
					break;

				case ‘\t‘:
				case ‘\n‘:
				case ‘\f‘:
				case ‘\r‘:
					break;
				}
			else
				switch (c) {
				case ‘"‘:
					newLength += 5;
					someCharacterEscaped = true;
					break;

				case ‘&‘:
				case ‘\‘‘:
					newLength += 4;
					someCharacterEscaped = true;
					break;

				case ‘<‘:
				case ‘>‘:
					newLength += 3;
					someCharacterEscaped = true;
					break;
				}
		}
		if (!someCharacterEscaped)
			return str;

		StringBuffer sb = new StringBuffer(newLength);
		for (int i = 0; i < length; i++) {
			char c = str.charAt(i);
			int cint = 0xffff & c;
			if (cint < 32)
				switch (c) {
				case ‘\t‘:
				case ‘\n‘:
				case ‘\f‘:
				case ‘\r‘:
					sb.append(c);
					break;
				}
			else
				switch (c) {
				case ‘"‘:
					sb.append("&quot;");
					break;

				case ‘\‘‘:
					sb.append("&apos;");
					break;

				case ‘&‘:
					sb.append("&amp;");
					break;

				case ‘<‘:
					sb.append("&lt;");
					break;

				case ‘>‘:
					sb.append("&gt;");
					break;

				default:
					sb.append(c);
					break;
				}
		}
		return sb.toString();
	}

?测试:

@Test
	public void test_escapeHTML(){
		String input="<script>";
		System.out.println(ValueWidget.escapeHTML(input));
	}

?运行结果:

&lt;script&gt;

?

对应的js方法:

escape: function (a) {
            a = a ? a : ‘‘;
            return a.replace(/</g, "\x26lt;").replace(/>/g, "\x26gt;").replace("/\x26/g", "\x26amp;").replace(/"/g, "\x26quot;");
        },

        unescape: function (a) {
            a = a ? a : ‘‘;
            return a.replace(/&lt;/g,
                "\x3c").replace(/&gt;/g, "\x3e").replace(/&amp;/g, "\x26").replace(/&quot;/g, ‘"‘);
        },

?

?

?

对HTML转码

原文:http://hw1287789687.iteye.com/blog/2262113

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!