4

I'm working on it

$source = mb_convert_encoding('test', "unicode", "utf-8");
$source = unpack('C*', $source);
var_dump($source);

return:

array (size=8)
  1 => int 0
  2 => int 116
  3 => int 0
  4 => int 101
  5 => int 0
  6 => int 115
  7 => int 0
  8 => int 116

but i want this return:

array (size=8)
  1 => int 116
  2 => int 0
  3 => int 101
  4 => int 0
  5 => int 115
  6 => int 0
  7 => int 116
  8 => int 0

I want use this return in openssl function for encryption. just $source important to me, i write other code for debugging.

What can i do to solve this problem?

MajidRamzi
  • 438
  • 2
  • 4
  • 12

1 Answers1

10

"Unicode" is not a real encoding; it's the name of the overarching standard and used as an alias for UTF-16BE mostly by Microsoft, and apparently PHP supports it for that reason. What you expect is UTF-16LE, so use that explicitly:

$source = mb_convert_encoding('test', 'UTF-16LE', 'UTF-8');
deceze
  • 510,633
  • 85
  • 743
  • 889