#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