我有一個UTF-8(在字面)這樣的 「\ XE2 \ X80 \ X93」。的Java:如何轉換UTF-8(在字面)轉換爲Unicode
我試圖用Java將其轉換成Unicode。
但我沒能找到一種方法,這種轉換。
任何人都可以幫助我嗎?
問候, 週六
我有一個UTF-8(在字面)這樣的 「\ XE2 \ X80 \ X93」。的Java:如何轉換UTF-8(在字面)轉換爲Unicode
我試圖用Java將其轉換成Unicode。
但我沒能找到一種方法,這種轉換。
任何人都可以幫助我嗎?
問候, 週六
System.out.println(new String(new byte[] {
(byte)0xE2, (byte)0x80, (byte)0x93 }, "UTF-8"));
打印一個破折號,這就是那三個字節編碼。從你的問題中不清楚你是否有這樣的三個字節,或者字面上是你發佈的字符串。如果你有字符串,然後只需用下面的解析成字節事前,例如:
final String[] bstrs = "\\xE2\\x80\\x93".split("\\\\x");
final byte[] bytes = new byte[bstrs.length-1];
for (int i = 1; i < bstrs.length; i++)
bytes[i] = (byte) ((Integer.parseInt(bstrs[i], 16) << 24) >> 24);
System.out.println(new String(bytes, "UTF-8"));
您可以使用Apache Commons郎StringEscapeUtils
或者,如果你不知道該字符串將永遠是\ XHH \ XHH那麼你可以:
String hex = input.replace("\x", "");
byte[] bytes = hexStringToByteArray(hex);
String result = new String(bytes, "utf-8");
hexStringToByteArray
是here。
也看到這個其他SO answer。
我們正在使用Hadoop的HBase表來存儲數據,並在數據存儲到HBase的表,它以這種格式存儲\ xE2 \ x80 \ x93。當我們嘗試使用StringEscapeUtils和其他一些實用程序將其轉換爲Unicode時,沒有任何幫助。 – Sat
您是否嘗試了我的其他建議,手動將\ xHH轉換爲bytearray然後解碼? – Ayman
@Marko我有一個這樣的字符串,它包含UTF-8的值。 「我們慶祝想法\ xE2 \ x80 \ x93」。 如果我的字符串包含「我們慶祝想法\ xE2 \ x80 \ x93s」,我使用正則表達式來替換爲0x。所以它會看起來像「我們慶祝這個想法0xE20x80x93s」。有沒有辦法解析這些數據,並只獲得十六進制值? – Sat
你將不得不字符串解析成一個'的char []'然後將其轉換成你想要的'String'。 –
字符串的['byte []'](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(byte []))構造函數是你的問題。如有必要,還提供字符集名稱。 –
目前尚不清楚你到底輸入了什麼。像'String input =「\ xE2 \ x80 \ x93」;'? – axtavt