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 return byteToHex(hi) + byteToHex(lo);
51 }
52
53 public static String parseString(String hexString) {
54 StringBuilder sb = new StringBuilder();
55
56 char[] array = hexString.toCharArray();
57
58 if ((array.length % 6) != 0) {
59 _log.error("String is not in hex format");
60
61 return hexString;
62 }
63
64 for (int i = 2; i < hexString.length(); i = i + 6) {
65 String s = hexString.substring(i, i + 4);
66
67 try {
68 char c = (char)Integer.parseInt(s, 16);
69
70 sb.append(c);
71 }
72 catch (Exception e) {
73 _log.error(e, e);
74
75 return hexString;
76 }
77 }
78
79 return sb.toString();
80 }
81
82 public static String toString(char[] array) {
83 StringBuilder sb = new StringBuilder();
84
85 for (int i = 0; i < array.length; i++) {
86 sb.append("\\u");
87 sb.append(charToHex(array[i]));
88 }
89
90 return sb.toString();
91 }
92
93 public static String toString(String s) {
94 if (s == null) {
95 return null;
96 }
97
98 return toString(s.toCharArray());
99 }
100
101 private static Log _log = LogFactoryUtil.getLog(UnicodeFormatter.class);
102
103 }