📄 htmlencoder.java
字号:
/* * Copyright 2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package org.apache.myfaces.renderkit.html.util;/** * Converts Strings so that they can be used within HTML-Code. */public abstract class HTMLEncoder{ /** * Variant of {@link #encode} where encodeNewline is false and encodeNbsp is true. */ public static String encode (String string) { return encode(string, false, true); } /** * Variant of {@link #encode} where encodeNbsp is true. */ public static String encode (String string, boolean encodeNewline) { return encode(string, encodeNewline, true); } /** * Encodes the given string, so that it can be used within a html page. * @param string the string to convert * @param encodeNewline if true newline characters are converted to <br>'s * @param encodeSubsequentBlanksToNbsp if true subsequent blanks are converted to &nbsp;'s */ public static String encode (String string, boolean encodeNewline, boolean encodeSubsequentBlanksToNbsp) { if (string == null) { return ""; } StringBuffer sb = null; //create later on demand String app; char c; for (int i = 0; i < string.length (); ++i) { app = null; c = string.charAt(i); switch (c) { case '"': app = """; break; //" case '&': app = "&"; break; //& case '<': app = "<"; break; //< case '>': app = ">"; break; //> case ' ': if (encodeSubsequentBlanksToNbsp && (i == 0 || (i - 1 >= 0 && string.charAt(i - 1) == ' '))) { //Space at beginning or after another space app = " "; } break; case '\n': if (encodeNewline) { app = "<br/>"; } break; //german umlauts case '\u00E4' : app = "ä"; break; case '\u00C4' : app = "Ä"; break; case '\u00F6' : app = "ö"; break; case '\u00D6' : app = "Ö"; break; case '\u00FC' : app = "ü"; break; case '\u00DC' : app = "Ü"; break; case '\u00DF' : app = "ß"; break; //misc //case 0x80: app = "€"; break; sometimes euro symbol is ascii 128, should we suport it? case '\u20AC': app = "€"; break; case '\u00AB': app = "«"; break; case '\u00BB': app = "»"; break; case '\u00A0': app = " "; break; default: if (((int)c) >= 0x80) { //encode all non basic latin characters app = "&#" + ((int)c) + ";"; } break; } if (app != null) { if (sb == null) { sb = new StringBuffer(string.substring(0, i)); } sb.append(app); } else { if (sb != null) { sb.append(c); } } } if (sb == null) { return string; } else { return sb.toString(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -