utf8 ord() etc

becool

Новичок
utf8 ord() etc

Не могу вытащить нужный ord utf символа.
Не до конца понятна логика.
вот есть:

$strutf8="testТЕСТ"; //strlen = 12

первая буква Т (русская) состоит из: 208 и 162, а на самом деле русская Т должна быть = 1058
как получить 1058 имея 208 и 162?

Текст, верней его коды пойдут дальше в приложения, php перевалочный пункт.
 

becool

Новичок
а не трогая iconv и прочее, можно как то? неужели свою таблицу забивать?...
хочется зрить в корень и уяснить суть =)

p.s.
Опять же, если у меня есть 1058, как его обратно перекинуть в 208 162
 

AmdY

Пью пиво
Команда форума
Предлогая тебе уникальный шанс найти эту функцию в мане ©DiMA
и почитай комменты
 

becool

Новичок
я не понял что такое -f utf-8 ucs-2... =)

но тем неменее стало понятно как берётся 1058
194 - это база 0
следующая 195 - это база 64 и так далее
в случае 208 - номер базы 14, база 896 + 162 = 1058

Всё оказалось дико просто, извиняюсь за полуночную панику =)

-~{}~ 26.02.09 02:47:

AmdY
в данном случае мне не нужна функция пхп =) поэтому отсылка к ману как то не к месту. К томуже я не думаю что в каждом стороннем клиентском приложении есть iconv() и прочее.
Повторюсь нужна была логика построения, алгоритм.

Предлагаю тебе читать задачи внимательней ;)
 

AmdY

Пью пиво
Команда форума
сходил бы в ман, нашёл бы и алгоритм, и реализацию, и без iconv
 

diamond_krnl

pure-php
Re: utf8 ord() etc

Мы делаем примерно так:
PHP:
class Aquilon_Multibyte
{
/*...skip...*/
  static public function order($char, $encoding = "UTF-8")
  {
    $char = mb_convert_encoding($char, "UCS-4BE", $encoding);
    $order = unpack("N", $char);
    return ($order ? $order[1] : null);
  }
/*...skip...*/
  static public function char($order, $encoding = "UTF-8")
  {
    $order = pack("N", $order);
    $char = mb_convert_encoding($order, $encoding, "UCS-4BE");
    return $char;
  }
/*...skip...*/
}
 
Сверху