Skip to content
Advertisement

How do PHP mb_convert_encoding functions use in Java?

I have a base64 encode want convert to utf8 string ,use php mb_convert_encoding convert is normal,code by:

$p=base64_decode("DFknU2sALQAyADAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==");
echo mb_convert_encoding(substr($p, 1, 12), 'utf8', 'utf-16');
echo "n";

How to convert to utf8 string in java.

String str = "0C5927536B002D003200300032000000000000000000000000000000000000000000000000000000";
String b = hexStringToString(str); // parse hexadecimal 
String string = new String(b.getBytes("UTF-8"), "UTF-16");
System.out.println(string); // no

I want result is :

大卫-202

Advertisement

Answer

Use Hex class in commons-codec library.

<dependency>     
   <groupId>commons-codec</groupId>     
   <artifactId>commons-codec</artifactId>     
   <version>latest</version> 
</dependency>

use import org.apache.commons.codec.binary.Hex; and then:

String str = "0C5927536B002D003200300032000000000000000000000000000000000000000000000000000000";
byte[] bytes = Hex.decodeHex(str.toCharArray());
System.out.println(new String(bytes, "UTF-8"));

Since in your PHP code the string is selected from byte 1 (substr($p, 1, 12)) you need to remove byte 1 when converting in java code. So:

String str = "0C5927536B002D003200300032000000000000000000000000000000000000000000000000000000";
byte[] bytes = Hex.decodeHex(str.toCharArray());
String str2 = new String(bytes, 1, 12, "UTF-16");
System.out.println(str2);
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement