Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Кирилица в Flash + PHP + MySQL (http://www.flasher.ru/forum/showthread.php?t=80855)

Madzsar 07.06.2006 14:53

Кирилица в Flash + PHP + MySQL
 
Добрый всем день!
Я у вас новый и с вопросом-

1.Есть элементарная база данных- user_id, user_name (допустим)
2.Есть элементарный flash.
3.Есть рнр с connect к базе данных итд.
4.В этом рнр находится и сам swf

И вот вопрос- в рнр я ставлю скриптик-
Код:

print"<SCRIPT LANGUAGE=JavaScript>
function User(){
        document.USER.SetVariable(\"User\",\"$User\");
        document.USER.SetVariable(\"UserName\",\"$UserName\");
}
</SCRIPT></HEAD>
<BODY onLoad=\"User()\">";

И задаю параметр в флеше- ............
/flash/swflash.cab#version=5,0,0,0\" ID=USER WIDTH=100% ...... итд.

В самом флеше - loadVariablesNum ("index.php?user=" add User add "&", 0);
Ну и соответственно Dynamic text- под именем UserName

Открыв мой.рнр?user_id=32 (допустим) естественно появляется в флеше UserName и...................
вместо кирилицы- знаки вопроса, причём латынь- всё ОК.
Бьюсь с этим и нет выхода. Может кто подскажет, поможет...
Заранее благодарен.

PS да, даже вывел print"$UserName"; над флешем, всё нормально пишет русск буквами, а вот во флеше- не хочет.

Madasan 07.06.2006 17:33

В базу писать в кодировке UTF-8! Или перекодировать на лету с помощью php.

x2com 08.06.2006 03:53

Если не ошибаюсь можно ещё попробовать в начале флэшки написать System.useCodepage = true; , должно сработать. Но это на крайняк, а так лучше воспользуися советом Madasan'а.

Madzsar 08.06.2006 15:44

2 x2com-
Спасибо за совет. Пробовал, не помогает...

2 Madasan-
Можно чуть разжевать- что имеете ввиду "на лету"?

Кстати, немного "облегчил" всю эту историю- в .рнр посто вывел текст типа &user=$User, и добавил-
<PARAM NAME=movie VALUE=\"http://my.swf?User=$User ......
Ну и в flash- loadVariablesNum ("MY.php?user=" add User add "&", 0);
T.text = User;
Очень всё заработало, но ........
Если даже и добился кирилица- ОК, появился другой глюк- не равотает "HTML", т.е если в тексте есть теги напр. <b> </b>- он их просто не видит...
Есть идеи?
Спасибо.

x2com 08.06.2006 15:57

2 Madzsar
Попробуй поискать здесь http://php.mysoft.ge/manual/ru/ информацию по перекодировке (mbstring и iconv). А вобще в яндексе много инфы на тему...
PS- можно ещё поискать пировский клас (http://pear.php.net/)
PPS- Мне ещё помнится, что MySQL может перекодировать.

Madzsar 08.06.2006 16:00

2 x2com
Спасибо за совет. Уже смотрю...

etc 08.06.2006 16:09

x2com, не надо учить плохому (useCodepage).

Madzsar, юзай функцию iconv при выводе данных, чтобы перекодировать в utf-8 (если с базой лень ковырятся).

Madzsar 08.06.2006 16:12

2 etc
Принял, спасибо.

x2com 08.06.2006 16:15

По поводу HTML тэгов,
Я, например, сбросил бы инфу в текст файл(ы) а потом прочитал бы их во флэшке.
Примерно так:
Код:

var ss = new TextField.StyleSheet();
ss.load("/css/style.css");
content.styleSheet = ss;
content.multiline = true;
content.html = true;
story = new XML();
story.ignoreWhite = true;
story.load("/html/cont.html");
story.onLoad = function() {
        content.htmlText = story;
}


Madzsar 08.06.2006 16:18

2 x2com
я тоже что-то подобное думал, только не придумал как.
Мне нравится эта идея...
Но если одновременно флеш смотрят несколько юзеров (каждый со своим ID)? как это заработает?

x2com 08.06.2006 16:28

2 Madzsar
Цитата:

Но если одновременно флеш смотрят несколько юзеров (каждый со своим ID)? как это заработает?
Например, юзер заходит под своим ID и ему ПХП генерит временнбый фийл. Например, если узверь ID=12234, то генерить что-то типа user_12234.html и передовать адрес файла через Param или лоадВар.

Madzsar 08.06.2006 16:42

Это, похоже то, что мне надо....
Итак, в рнр вставляю код, кот. написал.
А в флеше load этот user_1234.html ?
Правильно понял?

x2com 08.06.2006 16:54

1. генерим (как я уже писал) HTML файл в PHP
2. В пхп должно получиться примерно следующее:
PHP код:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="450" height="420">
............
<param name="FlashVars" value="userFile=user_<? echo $userID?>.html" />
<embed src="main.swf" FlashVars="userFile=user_<? echo $userID?>.html" width="450" height="420" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>

Авофлэше примерно такое:
Код:

var ss = new TextField.StyleSheet();
ss.load("/css/style.css");
content.styleSheet = ss;
content.multiline = true;
content.html = true;
story = new XML();
story.ignoreWhite = true;
story.load("/html/"+_root.userFile);
story.onLoad = function() {
content.htmlText = story;
}

Всё это, конечно, примерно... :)

Madzsar 08.06.2006 16:59

СПАСИБО
Буду пробовать...
если возникнут вопросы- обращусь (с позволения)!

x2com 08.06.2006 17:04

Незачто, обращайся.

Madzsar 08.06.2006 17:55

2 x2com
...... Я тут маленький эксперементик провёл... может всё намного проще???
Зашел в настройки собственного компа и именил в языковых настройках вот это- http://www.webmadzsar.hu/vegyes/RU.gif
У меня венгерский винд. и я никогда не работал на русск. поэтому, чтобы не сказать какую-то глупость- лучше картинкой.
После перезапуска компа ВСЁ НОРМАЛЬНО прописывается, работают и теги и кириллица.
Чувствую, какую-то ерунду осталось добавить в рнр и всё... но что?

Ведь не у каждого настроен комп на русск. язык

Madasan 08.06.2006 18:25

Для того, чтобы флэш нормально отображал русский шрифт на любом компе, нужно обязательно передавать данные в UTF-8! Если еще и зашить русские символы во флэшролик, то ни на каком компе проблем возникнуть не должно, в противном случае у пользователя может не оказаться русского шрифта.

Madzsar 08.06.2006 18:34

Спасибо.
Для того, чтобы флэш нормально отображал русский шрифт на любом компе, нужно обязательно передавать данные в UTF-8!
-- Я считал, что 1251- это люкс. Перевести всё в UTF-8?

Если еще и зашить русские символы во флэшролик, то ни на каком компе проблем возникнуть не должно,
-- Что это значит? Все буквы? Может есть такой готовый "набор джентельмена"? Не знаю, имеет ли значение- это динамический флеш.

Madzsar 08.06.2006 18:37

Где-то встречал такое-
<?
header("Content-Type: text/html; charset=UTF-8");
Говорят- помогает. Как Ваше мнение. Я с проблемой русск. языка (в динамич. флеш) столкнулся впервые.

Madasan 08.06.2006 18:49

Чтобы работало на ЛЮБОМ компе есть только такой выход, а зашить символы можно какие хочешь хоть весь алфавит, хоть только те символы какие посчитаешь нужными, и если в тексте будет символ который не зашит, то он не отобразиться, он просто будет пропущен. О том как зашивать шрифты можно найти в поиске, можно еще посмотреть про динамически подгружаемые шрифты.здесь

Madzsar 08.06.2006 18:54

UTF-8 не помогает.
Когда назад в настройках поставил венг. язык- опять абракадабра.
А вот за shared text спасибо. С этим не сталкивался- не было необходимости. Очень полезная ссылка.

Madzsar 09.06.2006 13:31

Добрый день.
Это опять я со "своими баранами"....
Проработал тему с шрифтовыми символами, как советовали.
Помогает, но только в статическом тексте...
Динамич. текст- те же яйца....
Уже несколько суток бьюсь над этой проблемой, не могу двигаться дальше....

iNils 09.06.2006 14:14

У тебя в самом начале было написано "swflash.cab#version=5,0,0,0"
Ты что для пятой версии делаешь?


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

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