Форум 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)
-   -   XML, UTF8 & KOI8-R (http://www.flasher.ru/forum/showthread.php?t=86656)

squiddy 20.10.2006 08:22

XML, UTF8 & KOI8-R
 
Доброго времени суток!

Вопрос к знающим - как заставить Flash читать файл XML в кодировке KOI8-R, а не в UTF8?

Поясняю - преобразовать файл в Юникод в данном случае не кавайное (не есть гуд, не кошерное) решение.
Теоретически можно сделать перекодировку посимвольно данных из XML с помощью ActionScript'а и некоторой таблицы перекодировки - но XMLparser Flash'евый пытается читать русские символы как-то странно - даже не по 2 байта, а так, что из 20 символов получается 12! :eek:
System.useCharset тоже не вариант, потому что кодировка ОС - windows-1251, и, кроме того, мувик должен корректно отображаться на не русскоязычных машинах...

P.S. К тому же, если передавать что-то в мувик из JavaScript, то мувик нормально это отображает в той же KOI8... не понимаю :confused:

jojo 20.10.2006 12:35

если ты формируеш XML из базы, то сразу выводи данные в UTF8,
ето проще и удобно, и будет корректно отображаться на не русскоязычных машинах.

etc 20.10.2006 14:31

Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.

squiddy 20.10.2006 15:52

Цитата:

Сообщение от __etc
Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.

что ты имеешь ввиду?
поясняю ситуацию - есть локальный файл с данными, он может быть только в KOI8-R и никак иначе. Проблема - как заставить парсер прочитать его именно как файл KOI8-R?

или предложите альтенативные варианты решения, исходя из того, что исходную кодировку менять нельзя

jojo, к сожалению, файл локальный и формирую его не я

etc 20.10.2006 15:55

Цитата:

Сообщение от squiddy
или предложите альтенативные варианты решения, исходя из того, что исходную кодировку менять нельзя

Поставить System.useCodepage = true;
KOI от windows-1251 отличается лишь обратным регистром и расположением русских букв. Т.е. есть прямая зависимость, например «Ч» в KOI = «в» в windows-1251.

squiddy 20.10.2006 16:17

Цитата:

Сообщение от __etc
Поставить System.useCodepage = true;
KOI от windows-1251 отличается лишь обратным регистром и расположением русских букв. Т.е. есть прямая зависимость, например «Ч» в KOI = «в» в windows-1251.

самый первый пост: "System.useCharset тоже не вариант, потому что кодировка ОС - windows-1251, и, кроме того, мувик должен корректно отображаться на не русскоязычных машинах..."

Код:

parent.topflash.SetVariable("pCaption",parent.document.hidframe.document.title);
хотя document.title в кодировке KOI8-R, строка отображается нормально
если же я ставлю useCharset, тогда отображается начинка файла, но начинаются краозяблики в тайтле и других местах

Да, файл с JavaScript и html тоже нельзя перекодировать

P.S. __etc, кстати, не прямая зависимость для некоторых букв, кажется
tr/абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/ЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪюабцдефгхийклмнопярстужвьызшэщчъ/;

P.P.S. обобщая - проблема - прочитать файл XML хотя бы посимвольно НЕ как UTF8, не прибегая к глобальным для мувика настройкам

etc 20.10.2006 16:47

System.useCharset не существует.

Решить проблему без utf-8 в таком случае нельзя. (Если, конечно, речь не идёт об AS3, где есть класс ByteArray и его метод readMultibyte).

з.Ы. Может и не прямая зависимость, но мой конвертер, которому уже года два как, прекрасно по прямой зависимости переводит из KOI в win.

meiciuc 22.10.2006 13:18

Код:

Сообщение от __etc
Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.

Код:

что ты имеешь ввиду?
поясняю ситуацию - есть локальный файл с данными, он может быть только в KOI8-R и никак иначе. Проблема - как заставить парсер прочитать его именно как файл KOI8-R?

ну так сделайте соответствующий файл для флеша но уже в утф-8. Одна строчка РНР переведет его в нужную кодировку. Зачем изобретать велосипед на флеше, если он уже есть в серверной части?

Если Вы напишете свой "декодер" на флеше (убив н-времени, добавив 1-2 КБ кода в ролик), а потом в будущем появиться еще какая-нибудь кодировка - снова лезть во флешку, менять, компилить (и все это без гарантий на будущее). Или проще добавить еще одну строчку в серверной части?

Dendroid 22.10.2006 14:00

Цитата:

Сообщение от meiciuc
Или проще добавить еще одну строчку в серверной части?

Говорят же, файл локальный, и нет возможности поменять его формат...

Уже все возможные варианты предложены: конвертировать из win-1251 (но не работает на машинах, где кодировка 1252 по-умолчанию), либо в 9-м флэш-плеере прочитать по байтам.
Сравнение с javascript, SetVariable() - некорректно, там уже сам браузер перекодируют куда надо и сам работает с юникодом. Может тогда отработать асинхрон и передать данные во флэш? ;)

Badim 23.10.2006 12:17

послушай meiciuc =)
не придумый изварещнные методы.
сделай скрипт в 3 строки:
1.загрузить файл,
2.конвертнуть содержимое в утф,
3.вернуть измененое содержимое.
и запрашивай этот скрипт вместо файла.
и будет всем счастье

squiddy 23.10.2006 14:54

извиняюсь, имелось ввиду useCodepage... надо меньше в Java сидеть со своими классами o.O

спасибо за помощь, конечно - НО ПОВТОРЯЮ ЕЩЕ РАЗ - вариант с изменением кодировки файла или созданием его копии НЕ ПОДХОДИТ. Равно как и использование скриптов на серверной части, т.к. все эти файлы зашиваются в пакет (компиленый ресурс)

Dendroid, спасибо за то, что подтолкунул к идее использовать JS для передачи XMLных нодов

P.S. FPlayer старше 7 версии тоже не подходит...


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

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