*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/**
*
* Helper class to encode/decode Strings with Numeric Character References as defined in SGML.
*
* @author franz.willer
*
* @version $Revision: 2101 $
* @since 25.11.2005
*/
public class NumericCharacterReference {
/**
* Decodes a String with Numeric Character References.
*
*
* @param str A NCR encoded String
* @param unknownCh, A character that is used if nnnn of nnnn; is not a int.
*
* @return The decoded String.
*/
public static String decode(String str, char unknownCh) {
StringBuffer sb = new StringBuffer();
int i1=0;
int i2=0;
while(i2
* Formats each character < 0x20 or > 0x7f to nnnn; where nnnn is the char value as int.
*
*
* @param str The raw String
* @return The encoded String
*/
public static String encode( String str ) {
char[] ch = str.toCharArray();
StringBuffer sb = new StringBuffer();
for ( int i = 0 ; i < ch.length ; i++ ) {
if ( ch[i] < 0x20 || ch[i] > 0x7f )
sb.append("").append((int) ch[i]).append(";");
else
sb.append(ch[i]);
}
return sb.toString();
}
}