Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UTF-16 & hex, Требуется русский текст перевести в UTF 
:(
    Опции темы
_AXE_
Дата 29.12.2007, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



Дан текст: "привет" нужно его преобразовать в "043F04400438043204350442".
Т.е. WINDOWS-1251 => UTF-16 & hex каждого символа в строке, делаю так:
Код

<?php
function asc2bin ($temp) 
{
  $len = strlen($temp);
  for ($i=0; $i<$len; $i++) $data.=sprintf("%x",ord(substr($temp,$i,1)));
  return $data;
}
$a="привет";
$c=iconv("WINDOWS-1251","UTF-16",$a);
$b=asc2bin($c);
echo"$b";

?>



Результат: fffe3f4404384324354424
в чем проблема?
PM MAIL WWW ICQ Skype GTalk   Вверх
vasac
Дата 29.12.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 1
Всего: 36



1. Вы не проверяете длину получившейся hex-строки и вместо "04" имеете просто "4".
2. Вперед добавлен символ "feff", видимо какая-то сигнатура, указывающая UTF-16
3. У вас походу машина не интеловской архитектуры и старший/младший байты идут в другом порядке. Или еще из-за чего-то. У меня 
Код

fe - ff - 4 - 3f - 4 - 40 - 4 - 38 - 4 - 32 - 4 - 35 - 4 - 42

PM WWW   Вверх
_AXE_
Дата 2.1.2008, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



Что предложите? smile 
PM MAIL WWW ICQ Skype GTalk   Вверх
kasmanaft
Дата 3.1.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 94
Регистрация: 16.11.2007

Репутация: 1
Всего: 2



Попробуйте 
Код

sprintf("%02x",ord($temp[$i]))

PM MAIL   Вверх
FractalizeR
Дата 7.1.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Код

<?php
$orig_text="привет";
$converted_text=iconv("WINDOWS-1251","UTF-16",$orig_text);
$hex_result = '';
for($i=0; $i<strlen($converted_text); $i++) {
  $hex_result .= sprintf("%02x", ord($converted_text[$i]));
}
echo($hex_result);

?>



--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
_AXE_
Дата 12.1.2008, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



Цитата(FractalizeR @ 7.1.2008,  19:25)
Код

<?php
$orig_text="привет";
$converted_text=iconv("WINDOWS-1251","UTF-16",$orig_text);
$hex_result = '';
for($i=0; $i<strlen($converted_text); $i++) {
  $hex_result .= sprintf("%02x", ord($converted_text[$i]));
}
echo($hex_result);

?>


Результат вашего кода:
fffe3f0440043804320435044204
 smile 
PM MAIL WWW ICQ Skype GTalk   Вверх
FractalizeR
Дата 12.1.2008, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 27.12.2007
Где: Россия/Москва

Репутация: нет
Всего: 4



Ну убрать надо UTF8 сигнатуру и получится то, что надо. Или нет?


--------------------
Чтобы поблагодарить или наоборот поругать участника форума лучше пользоваться значками "+" и "-", изменяющими репутацию. Они находятся слева от поста под именем пользователя.
PM MAIL   Вверх
_AXE_
Дата 21.1.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



Ап темы, ответа не нашел... smile 
PM MAIL WWW ICQ Skype GTalk   Вверх
_AXE_
Дата 25.1.2008, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



Я с этим парюсь уже достаточно много времени, хелпsmile
PM MAIL WWW ICQ Skype GTalk   Вверх
sTa1kEr
Дата 25.1.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 5
Всего: 146



Что-то я видимо не понимаю...
Код

echo bin2hex(mb_convert_encoding("привет", "UTF-16", "Windows-1251"));

Вывод:
Код

043f04400438043204350442


Кстати, зачем свой велосипед, когда есть bin2hex() smile
PM MAIL   Вверх
_AXE_
Дата 27.1.2008, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 1.11.2007
Где: Kazakhstan

Репутация: нет
Всего: нет



В вот точно! Надо жеsmile Спасибо, +1 однозначно! smile 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0789 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.