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
CodePudding user response:
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);