Вопрос

Кто -нибудь может мне помочь? Как я мог получить персонажей UCS2/Hexencoded

как «Привет» вернется »00480065006C006C006F"

Это шестиугодные значения:

0048 = h 0065 = e 006c = l 006c = l 006f = o*

Также на арабском языке (! مرحبا عالم) вернется 06450631062D0628064B06270020063906270644064500200021

Как я могу получить закодированный UCS2 в PHP?

Это было полезно?

Решение

mb_convert_encoding ($ str, 'ucs-2', 'auto') работает правильно, чтобы преобразовать строку, но вам придется сделать дополнительную работу, чтобы получить правильный вывод в браузере.

Вам нужно изменить набор символов вашего вывода, чтобы соответствовать UCS-2, чтобы иметь возможность использовать эхо вывести его на страницу. Кроме того, вам может потребоваться установить тип контента через мета Также отметите заголовок.

Я включил здесь три примера в следующих вариантах Unicode: UCS-2, UTF-16 и UTF-8; Как не все из них работали на меня, не настраиваясь в Internet Explorer. Возможно, вам потребуется сохранить свои файлы PHP в UTF-8, чтобы получить надлежащие результаты. Кроме того, я нахожусь на английской версии Windows, поэтому я не могу ввести вашу арабскую строку в правильной форме RTL. Извините, если ваша струна искажена здесь. Уверяю вас, что если вы замените его в месте, отмеченном моими комментариями, вы получите правильный результат. Наконец, у вас могут возникнуть проблемы с просмотром UCS-2 и UTF-16 в Internet Explorer-кажется, есть некоторые странности, когда вывод перезагружается через кэш. Тем не менее, Firefox 3.5.5 работал для всех трех кодировки. Если вы серьезно относитесь к созданию приложения, я настоятельно рекомендую вам использовать UTF-8 вместо UCS-2.

Версия UCS-2

Firefox 3.5.5 (ОК, но Firefox говорит, что это UTF-16BE на моем тесте.)
Internet Explorer 7.0 (не в порядке. Не обнаружил/конвертировал арабский язык.

<?php
header('Content-Type: text/html; charset=UCS-2');
mb_http_output('UCS-2');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UCS-2" /></head><body>', 'UCS-2', 'auto');
echo mb_convert_encoding('encoding: ', 'UCS-2', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UCS-2', 'auto');
echo mb_convert_encoding('<br />', 'UCS-2', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UCS-2', 'auto')).'<br />', 'UCS-2', 'auto');
echo mb_convert_encoding('</body>', 'UCS-2', 'auto');
?>

Версия UTF-16

Firefox 3.5.5 (100% OK)
Internet Explorer 7.0 (сбой. Возможно, придется указать байт-заказ.)

<?php
header('Content-Type: text/html; charset=UTF-16');
mb_http_output('UTF-16');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-16" /></head><body>', 'UTF-16', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-16', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-16', 'auto');
echo mb_convert_encoding('<br />', 'UTF-16', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-16', 'auto')).'<br />', 'UTF-16', 'auto');
echo mb_convert_encoding('</body>', 'UTF-16', 'auto');
?>

UTF-8

Firefox 3.5.5 (100% OK)
Internet Explorer 7.0 (100% OK)

<?php
header('Content-Type: text/html; charset=UTF-8');
mb_http_output('UTF-8');
echo mb_convert_encoding('<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body>', 'UTF-8', 'auto');
echo mb_convert_encoding('encoding: ', 'UTF-8', 'auto');
echo mb_convert_encoding(mb_http_output(), 'UTF-8', 'auto');
echo mb_convert_encoding('<br />', 'UTF-8', 'auto');
// NOTE: Replace the string here with your phrase
$strTerm = '!مرحبا عالم';
echo mb_convert_encoding('$strTerm = '.$strTerm.'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('query string: '.$_SERVER['QUERY_STRING'].'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('original hex: '.bin2hex($strTerm).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('transformed hex: '.bin2hex(mb_convert_encoding($strTerm, 'UTF-8', 'auto')).'<br />', 'UTF-8', 'auto');
echo mb_convert_encoding('</body>', 'UTF-8', 'auto');
?>

Другие советы

Согласно с эта веб -страница, мульти-байтовый строковый модуль (MBString) поддерживает UCS-2. После включения этого модуля вы можете использовать функцию mb_convert_encoding Чтобы преобразовать строку из одного кодирования в другой.

Цитируя Документация функции mb_convert_encoding:

string mb_convert_encoding  ( string $str  , string $to_encoding  [, mixed $from_encoding  ] )
Converts the character encoding of string str to to_encoding from optionally from_encoding . 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top