Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   проблема с отображением текста! (http://www.flasher.ru/forum/showthread.php?t=84691)

writerer 06.09.2006 01:07

проблема с отображением текста!
 
Сразу опишу проблему:
во флеше необходимо отобразить результат работы php скрипта, который возвращает инфу из mysql, с помощью amfphp Проблема опять с русским текстом! причём отображаются только квадратики! вместо всех букв и символов.
Для таблицы бд
Код:

default charset =cp1251
, и
Код:

System.useCodepage = true
писал,
причём особенность ещё в том что вместо тексте отображаются эти квдратики везде и в окне output и в текстововм поле, кроме того:
Код:

mytextfield_txt.text = 'вот это текст '+tn
,где tn определяется как значение поля с русским текстом
в таком случае в этом текстфиелде увидим и русские текст и квадратики эти ...(
ткните меня где криво!

MyXus 06.09.2006 02:28

там UTF-8 жеж.
кинь в личку мыло. вышлю образец

writerer 06.09.2006 19:51

кинул уже давно ..... чего молчишь ....
подскажите кто знает !

MyXus 06.09.2006 20:04

а я давно выслал

writerer 07.09.2006 01:22

мне ничего не приходило ... ( я тебе в личку отправил ещё раз моё мыло.
если не трудно вышли ещё раз!

MyXus 07.09.2006 01:56

2 раза отсылал. на держи так.
Код:

<?php
class News
{
    function News()
    {
        $this->$_utf8win1251=array(
                "\xD0\x90"=>"\xC0","\xD0\x91"=>"\xC1","\xD0\x92"=>"\xC2","\xD0\x93"=>"\xC3","\xD0\x94"=>"\xC4",
                "\xD0\x95"=>"\xC5","\xD0\x81"=>"\xA8","\xD0\x96"=>"\xC6","\xD0\x97"=>"\xC7","\xD0\x98"=>"\xC8",
                "\xD0\x99"=>"\xC9","\xD0\x9A"=>"\xCA","\xD0\x9B"=>"\xCB","\xD0\x9C"=>"\xCC","\xD0\x9D"=>"\xCD",
                "\xD0\x9E"=>"\xCE","\xD0\x9F"=>"\xCF","\xD0\xA0"=>"\xD0","\xD0\xA1"=>"\xD1","\xD0\xA2"=>"\xD2",
                "\xD0\xA3"=>"\xD3","\xD0\xA4"=>"\xD4","\xD0\xA5"=>"\xD5","\xD0\xA6"=>"\xD6","\xD0\xA7"=>"\xD7",
                "\xD0\xA8"=>"\xD8","\xD0\xA9"=>"\xD9","\xD0\xAA"=>"\xDA","\xD0\xAB"=>"\xDB","\xD0\xAC"=>"\xDC",
                "\xD0\xAD"=>"\xDD","\xD0\xAE"=>"\xDE","\xD0\xAF"=>"\xDF","\xD0\x87"=>"\xAF","\xD0\x86"=>"\xB2",
                "\xD0\x84"=>"\xAA","\xD0\x8E"=>"\xA1","\xD0\xB0"=>"\xE0","\xD0\xB1"=>"\xE1","\xD0\xB2"=>"\xE2",
                "\xD0\xB3"=>"\xE3","\xD0\xB4"=>"\xE4","\xD0\xB5"=>"\xE5","\xD1\x91"=>"\xB8","\xD0\xB6"=>"\xE6",
                "\xD0\xB7"=>"\xE7","\xD0\xB8"=>"\xE8","\xD0\xB9"=>"\xE9","\xD0\xBA"=>"\xEA","\xD0\xBB"=>"\xEB",
                "\xD0\xBC"=>"\xEC","\xD0\xBD"=>"\xED","\xD0\xBE"=>"\xEE","\xD0\xBF"=>"\xEF","\xD1\x80"=>"\xF0",
                "\xD1\x81"=>"\xF1","\xD1\x82"=>"\xF2","\xD1\x83"=>"\xF3","\xD1\x84"=>"\xF4","\xD1\x85"=>"\xF5",
                "\xD1\x86"=>"\xF6","\xD1\x87"=>"\xF7","\xD1\x88"=>"\xF8","\xD1\x89"=>"\xF9","\xD1\x8A"=>"\xFA",
                "\xD1\x8B"=>"\xFB","\xD1\x8C"=>"\xFC","\xD1\x8D"=>"\xFD","\xD1\x8E"=>"\xFE","\xD1\x8F"=>"\xFF",
                "\xD1\x96"=>"\xB3","\xD1\x97"=>"\xBF","\xD1\x94"=>"\xBA","\xD1\x9E"=>"\xA2");
        $this->methodTable = array
        (
            "getNews" => array
            (
                "access" => "remote",
                "description" => "Pings back a message"
            ),
                        "getPages" => array
            (
                "access" => "remote",
                "description" => "Pings back a message"
            )
        );
    }
 
    function getNews($pagenum)
    {

    }

        function getPages() {

        }

/****************************************************/

        function ConnectBase() {
                $db = mysql_connect ("192.168.0.158", "root", "") or die ("Sorry, connect to database fialed.");
                mysql_select_db ("blest", $db) or die ("Sorry, connect to table fialed.");
                mysql_query("SET NAMES cp1251", $db);
        }

       
/*****************************************************************************************/

        function CP1251toUTF8($str){ // (C) SiMM
                static $table = array("\xA8" => "\xD0\x81", // Ё
                        "\xB8" => "\xD1\x91", // ё
                      );
                return preg_replace('#[\x80-\xFF]#se',
                      ' "$0" >= "\xF0" ? "\xD1".chr(ord("$0")-0x70) :
                      ("$0" >= "\xC0" ? "\xD0".chr(ord("$0")-0x30) :
                        (isset($table["$0"]) ? $table["$0"] : "")
                      )',
                      $str
                    );
        }

        function utf8_win1251($a) {
                $_utf8win1251 = $this->$_utf8win1251;
                if(is_array($a)) {
                        foreach($a as $k=>$v) {
                          if(is_array($v)) {
                                $a[$k]=utf8_win1251($v);
                          } else {
                                $a[$k]=strtr($v,$_utf8win1251);
                          }
                  }
                  return $a;
                } else {
                        return strtr($a,$_utf8win1251);
                }
        }

}

?>


writerer 07.09.2006 03:23

пасиба бальшое

writerer 07.09.2006 12:31

всё равно я чего-то наверное не до конца понял (( ....
то есть данные в базе хранятся в утф8 и чтобы русский текст нормально во флеше отображался то мне их надо в вин1251 ?! так ....
если да то чёт у меня никак не применятеся function utf8_win1251() ((
напрмер если у меня:
Код:

$result = mysql_query($sql);
return $result;

то как мне этот $result переконвертить ?

writerer 07.09.2006 17:11

продолжаем ....
вот смотрите, когда я эти данные при помощи того же пхп просто вывожу эхом на страницу то при просмтре страницы с кодировкой win-1251 русский текст виден нормально, если же поставить utf-8, то получаются такие же квадратики как и во флеше. значит данные передаются во флеш именно в 1251, а тогда надо писать System.useCodepage = true. пишу а толку никакого
спасайте!!

HN4E7O 08.09.2006 16:11

v php polu4aya utf-8 i sobrav xml v vide kotorii mne nada perelopa4ivayu simvoli ot kotorix paritsya flash (& i #)
Код:

cp1251_utf8($xml);
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 if ( $iAscii == 046 )
          $sOutput .= "@3@";
      else
          $sOutput .= $sInput[$i];
  }

peredayu vse eto vo flashi tam yzhe poly4iv perevozhy obratno
Код:

function changeGo(original:String){
        var uno:String=original.split("$#").join("&#");
        var dos:String=uno.split("@3@").join("&");
        return dos;
}

vot tak nemnogo 4erez ZHHHH zato vse rabotaet ;-)

writerer 08.09.2006 22:56

я хотел преобразовывать, но пока что пришёл к другому варианту, а именно к тому чтобы хранить текст в базе в утф-8, тогда не надо ничего преобразовывать ))

MyXus 27.09.2006 23:07

Дорогие друзья!
В посте {#6} я выложил класс с методами перегонки UTF8->win1251->UTF8. Как вдруг сейчас оказалось, эти методы теряют символ "№". Я нифига не понимаю в регулярных выраженияях и не могу разобраться что она делает. Поможите пожалста!


Часовой пояс GMT +4, время: 14:39.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.