aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-common
diff options
context:
space:
mode:
authorAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-04-15 16:03:26 +0200
committerAndreas Fitzek <andreas.fitzek@iaik.tugraz.at>2014-04-15 16:03:26 +0200
commit53130153222382e2610c227909e446e7ac23827e (patch)
treea3a0ac3c2e286d9d6ec782f77f4c10f621a58736 /pdf-as-common
parentb4b272b6af9d1f3c51011a407cdc29f64b812865 (diff)
downloadpdf-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')
-rw-r--r--pdf-as-common/src/main/java/at/gv/egiz/pdfas/common/utils/StringUtils.java88
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;
+ }
}