diff options
author | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-04-15 16:03:26 +0200 |
---|---|---|
committer | Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> | 2014-04-15 16:03:26 +0200 |
commit | 53130153222382e2610c227909e446e7ac23827e (patch) | |
tree | a3a0ac3c2e286d9d6ec782f77f4c10f621a58736 /pdf-as-common/src | |
parent | b4b272b6af9d1f3c51011a407cdc29f64b812865 (diff) | |
download | pdf-as-4-53130153222382e2610c227909e446e7ac23827e.tar.gz pdf-as-4-53130153222382e2610c227909e446e7ac23827e.tar.bz2 pdf-as-4-53130153222382e2610c227909e446e7ac23827e.zip |
Fixed String encoding if CP1252 not applicable, use URL encoding
Diffstat (limited to 'pdf-as-common/src')
-rw-r--r-- | pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java | 88 |
1 files changed, 63 insertions, 25 deletions
diff --git a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java index 35cdf904..d0a9fee7 100644 --- a/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java +++ b/pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java @@ -23,35 +23,73 @@ ******************************************************************************/ package at.gv.egiz.pdfas.common.utils; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.util.Formatter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** - * Created with IntelliJ IDEA. - * User: afitzek - * Date: 8/28/13 - * Time: 12:42 PM - * To change this template use File | Settings | File Templates. + * Created with IntelliJ IDEA. User: afitzek Date: 8/28/13 Time: 12:42 PM To + * change this template use File | Settings | File Templates. */ public class StringUtils { - public static String bytesToHexString(byte[] bytes) { - StringBuilder sb = new StringBuilder(bytes.length * 2); - - Formatter formatter = new Formatter(sb); - for (byte b : bytes) { - formatter.format("%02x", b); - } - formatter.close(); - - return sb.toString(); - } - - public static String extractLastID(String id) { - int lastIDX = id.lastIndexOf('.'); - String result = id; - if(lastIDX > 0) { - result = id.substring(lastIDX+1); - } - return result; - } + private static final Logger logger = LoggerFactory + .getLogger(StringUtils.class); + + public static String bytesToHexString(byte[] bytes) { + StringBuilder sb = new StringBuilder(bytes.length * 2); + + Formatter formatter = new Formatter(sb); + for (byte b : bytes) { + formatter.format("%02x", b); + } + formatter.close(); + + return sb.toString(); + } + + public static String extractLastID(String id) { + int lastIDX = id.lastIndexOf('.'); + String result = id; + if (lastIDX > 0) { + result = id.substring(lastIDX + 1); + } + return result; + } + + public static String convertStringToPDFFormat(String value) + throws UnsupportedEncodingException { + byte[] replace_bytes = applyWinAnsiEncoding(value); + + String restored_value = unapplyWinAnsiEncoding(replace_bytes); + if (!value.equals(restored_value)) { + // Cannot encode String with CP1252 have to use URL encoding ... + return URLEncoder.encode(value, "UTF-8"); + } + return value; + } + + public static byte[] applyWinAnsiEncoding(String text) + throws UnsupportedEncodingException { + byte[] replace_bytes; + replace_bytes = text.getBytes("windows-1252");// CP1252 = + // WinAnsiEncoding + return replace_bytes; + } + + /** + * Unapplies the WinAnsi encoding. + * + * @param replace_bytes + * The bytes. + * @return Returns the decoded String. + * @throws UnsupportedEncodingException + */ + public static String unapplyWinAnsiEncoding(byte[] replace_bytes) throws UnsupportedEncodingException { + String text = new String(replace_bytes, "windows-1252"); + return text; + } } |