Как я могу получить тот же результат, что и функция java getBytes(), использующая PHP?

#java #php

#java #php

Вопрос:

Мой Java-код выглядит так:

 public void trans() {
    try {
        byte[] test = "测试".getBytes("utf-8");
        for(byte b:test){
            System.out.println(b);
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
}
  

И это печатает:

 -26
-75
-117
-24
-81
-107
  

Теперь я хочу получить тот же результат, используя PHP, мой код выглядит следующим образом:

 function getUnicodeFromOneUTF8($word) {
$arr = str_split($word);
foreach ($arr as $value)
    echo hexdec(ord($value)). '</br>';
}
getUnicodeFromOneUTF8('测试');
  

Но он печатает это:

 230
181
139
232
175
149
  

Как я могу получить тот же результат?

Комментарии:

1. Просто удалите hexdec…

2. Я только что изменил вопрос, это вызывает проблему с китайским языком…

3. Это одни и те же байты, вы отображаете их по-разному (со знаком или без знака).

4. да, они одинаковы, когда я печатаю его с помощью двоичного кода на Java, спасибо. @Maerlyn

Ответ №1:

В PHP вы можете использовать эту функцию для этого

 $result = mb_encode_numericentity('测试test', [0, 0x10FFFF, 0, 0x10FFFF], 'UTF-8');
echo htmlentities($result);
  

http://php.net/manual/en/function.mb-encode-numericentity.php