BeBot - An Anarchy Online and Age Of Conan chat automaton

Archive => Anarchy Online Archive => BeBot 0.4 support => Topic started by: Brianich on October 30, 2007, 06:11:18 pm

Title: problem with encoding again...
Post by: Brianich on October 30, 2007, 06:11:18 pm
Hello, i was out of ao for long time. now im totally back and trying to install latest bot. All working fine exept 1 thing, again... How to make cp1251 encoding work with new bot, last time i have resolved this problem with adding this code to bot.php, now it not working.

Quote
<?
function utf2win1251 ($s)
{
 $out = "";

 for ($i=0; $i<strlen($s); $i++)
 {
  $c1 = substr ($s, $i, 1);
  $byte1 = ord ($c1);
  if ($byte1>>5 == 6) // 110x xxxx, 110 prefix for 2 bytes unicode
  {
   $i++;
   $c2 = substr ($s, $i, 1);
   $byte2 = ord ($c2);
   $byte1 &= 31; // remove the 3 bit two bytes prefix
   $byte2 &= 63; // remove the 2 bit trailing byte prefix
   $byte2 |= (($byte1 & 3) << 6); // last 2 bits of c1 become first 2 of c2
   $byte1 >>= 2; // c1 shifts 2 to the right

   $word = ($byte1<<8) + $byte2;
   if ($word==1025) $out .= chr(168);                    // ?
   elseif ($word==1105) $out .= chr(184);                // ?
   elseif ($word>=0x0410 && $word<=0x044F) $out .= chr($word-848); // ?-? ?-?
   else
   {  
     $a = dechex($byte1);
     $a = str_pad($a, 2, "0", STR_PAD_LEFT);
     $b = dechex($byte2);
     $b = str_pad($b, 2, "0", STR_PAD_LEFT);
     $out .= "&#x".$a.$b.";";
   }
  }
  else
  {
   $out .= $c1;
  }
 }

 return $out;
}

function cp1251_utf8( $sInput )
{
   $sOutput = "";

   for ( $i = 0; $i < strlen( $sInput ); $i++ )
   {
       $iAscii = ord( $sInput[$i] );

       if ( $iAscii >= 192 && $iAscii <= 255 )
           $sOutput .=  "&#".( 1040 + ( $iAscii - 192 ) ).";";
       else if ( $iAscii == 168 )
           $sOutput .= "&#".( 1025 ).";";
       else if ( $iAscii == 184 )
           $sOutput .= "&#".( 1105 ).";";
       else
           $sOutput .= $sInput[$i];
   }
  
   return $sOutput;
}

Thanks.
Title: Re: problem with encoding again...
Post by: Alreadythere on October 30, 2007, 11:17:14 pm
I don't know if those functions work or even what they do, never played around with the charsets and encoding.

But just adding those functions alone won't do much good, you'll have to call them in the message handling functions, too. I think they need to be in inc_tell(), inc_pggmsg() and inc_gmsg() and the send_*() functions, in one way or another.

Check your old Bot.php for calls to the functions you have, the names of the functions haven't changed in Bot.php.
Title: Re: problem with encoding again...
Post by: Blueeagle on October 31, 2007, 03:30:55 am
Are you looking for http://php.net/iconv perhaps?

Other than that I really, really do recomend upgrading your server to handle UTF-8.
Title: Re: problem with encoding again...
Post by: Brianich on October 31, 2007, 12:34:02 pm
Yeah im looking for iconv, but it not working too (Becouse im gimp in code), maybe someone can halp me to install it properly?
SimplePortal 2.3.7 © 2008-2024, SimplePortal