1
22
23 package com.liferay.portal.kernel.util;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27
28
33 public class UnicodeFormatter {
34
35 public static char HEX_DIGIT[] = {
36 '0', '1', '2', '3', '4', '5', '6', '7',
37 '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
38 };
39
40 public static String byteToHex(byte b) {
41 char[] array = {HEX_DIGIT[(b >> 4) & 0x0f], HEX_DIGIT[b & 0x0f]};
42
43 return new String(array);
44 }
45
46 public static String charToHex(char c) {
47 byte hi = (byte)(c >>> 8);
48 byte lo = (byte)(c & 0xff);
49
50 char[] array = {
51 HEX_DIGIT[(hi >> 4) & 0x0f], HEX_DIGIT[hi & 0x0f],
52 HEX_DIGIT[(lo >> 4) & 0x0f], HEX_DIGIT[lo & 0x0f]
53 };
54
55 return new String(array);
56 }
57
58 public static String parseString(String hexString) {
59 StringBuilder sb = new StringBuilder();
60
61 char[] array = hexString.toCharArray();
62
63 if ((array.length % 6) != 0) {
64 _log.error("String is not in hex format");
65
66 return hexString;
67 }
68
69 for (int i = 2; i < hexString.length(); i = i + 6) {
70 String s = hexString.substring(i, i + 4);
71
72 try {
73 char c = (char)Integer.parseInt(s, 16);
74
75 sb.append(c);
76 }
77 catch (Exception e) {
78 _log.error(e, e);
79
80 return hexString;
81 }
82 }
83
84 return sb.toString();
85 }
86
87 public static String toString(char[] array) {
88 StringBuilder sb = new StringBuilder();
89
90 for (int i = 0; i < array.length; i++) {
91 sb.append("\\u");
92 sb.append(charToHex(array[i]));
93 }
94
95 return sb.toString();
96 }
97
98 public static String toString(String s) {
99 if (s == null) {
100 return null;
101 }
102
103 return toString(s.toCharArray());
104 }
105
106 private static Log _log = LogFactoryUtil.getLog(UnicodeFormatter.class);
107
108 }