Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: UTF-8 -> win-1251
 
 автор: whi-teoos   (29.10.2007 в 10:33)   письмо автору
 
 

Возможно-ли перекодировать без использования либ, не входящих в дефолтную "сборку" пхп?

   
 
 автор: kasmanaft   (29.10.2007 в 11:17)   письмо автору
 
   для: whi-teoos   (29.10.2007 в 10:33)
 

iconv() не подойдет?

   
 
 автор: mihdan   (30.10.2007 в 18:18)   письмо автору
 
   для: whi-teoos   (29.10.2007 в 10:33)
 


<?php
$chars 
= array(
//  # upper case letters
  
'208144' => chr(192), '208145' => chr(193), '208146' => chr(194),
  
'208147' => chr(195), '208148' => chr(196), '208149' => chr(197),
  
'208129' => chr(168), '208150' => chr(198), '208151' => chr(199),
  
'208152' => chr(200), '208153' => chr(201), '208154' => chr(202),
  
'208155' => chr(203), '208156' => chr(204), '208157' => chr(205),
  
'208158' => chr(206), '208159' => chr(207), '208160' => chr(208),
  
'208161' => chr(209), '208162' => chr(210), '208163' => chr(211),
  
'208164' => chr(212), '208165' => chr(213), '208166' => chr(214),
  
'208167' => chr(215), '208168' => chr(216), '208169' => chr(217),
  
'208170' => chr(218), '208171' => chr(219), '208172' => chr(220),
  
'208173' => chr(221), '208174' => chr(222), '208175' => chr(223),
//  # lower case letters
  
'208176' => chr(224), '208177' => chr(225), '208178' => chr(226),
  
'208179' => chr(227), '208180' => chr(228), '208181' => chr(229),
  
'209145' => chr(184), '208182' => chr(230), '208183' => chr(231),
  
'208184' => chr(232), '208185' => chr(233), '208186' => chr(234),
  
'208187' => chr(235), '208188' => chr(236), '208189' => chr(237),
  
'208190' => chr(238), '208191' => chr(239), '209128' => chr(240),
  
'209129' => chr(241), '209130' => chr(242), '209131' => chr(243),  
  
'209132' => chr(244), '209133' => chr(245), '209134' => chr(246),
  
'209135' => chr(247), '209136' => chr(248), '209137' => chr(249),
  
'209138' => chr(250), '209139' => chr(251), '209140' => chr(252),
  
'209141' => chr(253), '209142' => chr(254), '209143' => chr(255)
);
// Возвращает строку в Windows-1251, перекодированную из UTF-8
function utf8_win($str)
{
  global 
$chars;
  
$len strlen($str);
  
$temp '';

  for(
$i=0;$i<$len;$i++) {
    
$chcode ord($str[$i]);
    while(
$i<$len-&& $chcode!=208 && $chcode!=209) { # skip not utf8 chars
      
$temp.=$str[$i];
      
$chcode ord($str[++$i]);
    }
    if(
$i<$len-1) {
      
$key = (string) $chcode.ord($str[++$i]);
      if(isset(
$chars[$key])) { # if after 208 or 209 correct char (exist as key in $chars)
    
$temp.= $chars[$key];
      } else 
$temp.=$str[$i];
    } else 
$temp.=$str[$i];
  }
  return(
$temp);
}

// Возвращает строку в UTF-8, перекодированную из Windows-1251
function win_utf8($str)
{
  global 
$chars;
  
$chars array_flip($chars);
  
$len strlen($str);
  
$temp '';
  
  for(
$i=0;$i<$len;$i++) {
    if(isset(
$chars[$str[$i]])) {
    
$key = (string) $chars[$str[$i]];
    
$chs chr($key[0].$key[1].$key[2]).chr($key[3].$key[4].$key[5]);
    
$temp.=$chs;
    } else 
$temp.=$str[$i];
  }
  
$chars array_flip($chars);
  return(
$temp);
}
?>

   
 
 автор: Unkind   (30.10.2007 в 22:17)   письмо автору
 
   для: mihdan   (30.10.2007 в 18:18)
 

А почему Вы байты 128 - 191 просто не рассматриваете? И массив, если заметить, состоит и пар "число => chr(i), число => chr(i + 1), ...". Можно было бы упростить это.

   
 
 автор: mihdan   (30.10.2007 в 22:25)   письмо автору
 
   для: Unkind   (30.10.2007 в 22:17)
 

Что вам мешает? Упростите и код в студию - будем только рады

   
 
 автор: Unkind   (30.10.2007 в 22:27)   письмо автору
 
   для: mihdan   (30.10.2007 в 22:25)
 

> Что вам мешает?
Что мне мешает Вам помешать прекратить постить даже не проверенные коды? Не знаю. Наверное, Вы далеко от меня находитесь.

   
 
 автор: mihdan   (30.10.2007 в 22:30)   письмо автору
 
   для: Unkind   (30.10.2007 в 22:27)
 

Код рабочий - какие претензии то? Попрошу без оскорблений

   
 
 автор: Unkind   (30.10.2007 в 22:33)   письмо автору
 
   для: mihdan   (30.10.2007 в 22:30)
 

Я же сказал, что нерабочий. Вам надо прямо говорить?

   
 
 автор: mihdan   (30.10.2007 в 22:37)   письмо автору
 
   для: Unkind   (30.10.2007 в 22:33)
 

А что у вас не работает или ручки кривоваты?

   
 
 автор: Unkind   (30.10.2007 в 22:44)   письмо автору
 
   для: mihdan   (30.10.2007 в 22:37)
 

> А что у вас не работает или ручки кривоваты?
Кривоваты у автора кода и маловато у Вас мозгов.

<?php
$chars 
= array( 
//  # upper case letters 
  
'208144' => chr(192), '208145' => chr(193), '208146' => chr(194), 
  
'208147' => chr(195), '208148' => chr(196), '208149' => chr(197), 
  
'208129' => chr(168), '208150' => chr(198), '208151' => chr(199), 
  
'208152' => chr(200), '208153' => chr(201), '208154' => chr(202), 
  
'208155' => chr(203), '208156' => chr(204), '208157' => chr(205), 
  
'208158' => chr(206), '208159' => chr(207), '208160' => chr(208), 
  
'208161' => chr(209), '208162' => chr(210), '208163' => chr(211), 
  
'208164' => chr(212), '208165' => chr(213), '208166' => chr(214), 
  
'208167' => chr(215), '208168' => chr(216), '208169' => chr(217), 
  
'208170' => chr(218), '208171' => chr(219), '208172' => chr(220), 
  
'208173' => chr(221), '208174' => chr(222), '208175' => chr(223), 
//  # lower case letters 
  
'208176' => chr(224), '208177' => chr(225), '208178' => chr(226), 
  
'208179' => chr(227), '208180' => chr(228), '208181' => chr(229), 
  
'209145' => chr(184), '208182' => chr(230), '208183' => chr(231), 
  
'208184' => chr(232), '208185' => chr(233), '208186' => chr(234), 
  
'208187' => chr(235), '208188' => chr(236), '208189' => chr(237), 
  
'208190' => chr(238), '208191' => chr(239), '209128' => chr(240), 
  
'209129' => chr(241), '209130' => chr(242), '209131' => chr(243),   
  
'209132' => chr(244), '209133' => chr(245), '209134' => chr(246), 
  
'209135' => chr(247), '209136' => chr(248), '209137' => chr(249), 
  
'209138' => chr(250), '209139' => chr(251), '209140' => chr(252), 
  
'209141' => chr(253), '209142' => chr(254), '209143' => chr(255
); 
// Возвращает строку в Windows-1251, перекодированную из UTF-8 
function utf8_win($str

  global 
$chars
  
$len strlen($str); 
  
$temp ''

  for(
$i=0;$i<$len;$i++) { 
    
$chcode ord($str[$i]); 
    while(
$i<$len-&& $chcode!=208 && $chcode!=209) { # skip not utf8 chars 
      
$temp.=$str[$i]; 
      
$chcode ord($str[++$i]); 
    } 
    if(
$i<$len-1) { 
      
$key = (string) $chcode.ord($str[++$i]); 
      if(isset(
$chars[$key])) { # if after 208 or 209 correct char (exist as key in $chars) 
    
$temp.= $chars[$key]; 
      } else 
$temp.=$str[$i]; 
    } else 
$temp.=$str[$i]; 
  } 
  return(
$temp); 


// Возвращает строку в UTF-8, перекодированную из Windows-1251 
function win_utf8($str

  global 
$chars
  
$chars array_flip($chars); 
  
$len strlen($str); 
  
$temp ''
   
  for(
$i=0;$i<$len;$i++) { 
    if(isset(
$chars[$str[$i]])) { 
    
$key = (string) $chars[$str[$i]]; 
    
$chs chr($key[0].$key[1].$key[2]).chr($key[3].$key[4].$key[5]); 
    
$temp.=$chs
    } else 
$temp.=$str[$i]; 
  } 
  
$chars array_flip($chars); 
  return(
$temp); 
}

var_dump(iconv('windows-1251''utf-8'chr(128)) == win_utf8(chr(128))); //bool(false)
?>

   
 
 автор: mihdan   (30.10.2007 в 23:16)   письмо автору
 
   для: Unkind   (30.10.2007 в 22:44)
 

При чем тут мои мозги - на форуме по РНР. Автор кода не я вообще-то. И давайте уже закроем эту тему. Код взят с http://dklab.ru

   
 
 автор: Unkind   (30.10.2007 в 23:22)   письмо автору
 
   для: mihdan   (30.10.2007 в 23:16)
 

А я и не говорил, что автор кода Вы. То, что кто-то другой было ясно еще сразу.

А если Вы думаете, что для написания качественного кода на том же PHP мозги ни к чему, то Вы заблуждаетесь.

   
 
 автор: Sobachka   (31.10.2007 в 01:40)   письмо автору
 
   для: mihdan   (30.10.2007 в 23:16)
 

откуда взять код надо было бы сразу говорить... писать чужой код как свой - вверх позора.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования