Просмотр полной версии : 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:
если ты формируеш XML из базы, то сразу выводи данные в UTF8,
ето проще и удобно, и будет корректно отображаться на не русскоязычных машинах.
Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.
Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.
что ты имеешь ввиду?
поясняю ситуацию - есть локальный файл с данными, он может быть только в KOI8-R и никак иначе. Проблема - как заставить парсер прочитать его именно как файл KOI8-R?
или предложите альтенативные варианты решения, исходя из того, что исходную кодировку менять нельзя
jojo, к сожалению, файл локальный и формирую его не я
или предложите альтенативные варианты решения, исходя из того, что исходную кодировку менять нельзя
Поставить System.useCodepage = true;
KOI от windows-1251 отличается лишь обратным регистром и расположением русских букв. Т.е. есть прямая зависимость, например «Ч» в KOI = «в» в windows-1251.
Поставить 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, не прибегая к глобальным для мувика настройкам
System.useCharset не существует.
Решить проблему без utf-8 в таком случае нельзя. (Если, конечно, речь не идёт об AS3, где есть класс ByteArray и его метод readMultibyte).
з.Ы. Может и не прямая зависимость, но мой конвертер, которому уже года два как, прекрасно по прямой зависимости переводит из KOI в win.
Сообщение от __etc
Выводи KOI в utf-8, а во Flash просто конвертируй раскладку KOI в нормальную.
что ты имеешь ввиду?
поясняю ситуацию - есть локальный файл с данными, он может быть только в KOI8-R и никак иначе. Проблема - как заставить парсер прочитать его именно как файл KOI8-R?
ну так сделайте соответствующий файл для флеша но уже в утф-8. Одна строчка РНР переведет его в нужную кодировку. Зачем изобретать велосипед на флеше, если он уже есть в серверной части?
Если Вы напишете свой "декодер" на флеше (убив н-времени, добавив 1-2 КБ кода в ролик), а потом в будущем появиться еще какая-нибудь кодировка - снова лезть во флешку, менять, компилить (и все это без гарантий на будущее). Или проще добавить еще одну строчку в серверной части?
Dendroid
22.10.2006, 14:00
Или проще добавить еще одну строчку в серверной части?
Говорят же, файл локальный, и нет возможности поменять его формат...
Уже все возможные варианты предложены: конвертировать из win-1251 (но не работает на машинах, где кодировка 1252 по-умолчанию), либо в 9-м флэш-плеере прочитать по байтам.
Сравнение с javascript, SetVariable() - некорректно, там уже сам браузер перекодируют куда надо и сам работает с юникодом. Может тогда отработать асинхрон и передать данные во флэш? ;)
послушай meiciuc =)
не придумый изварещнные методы.
сделай скрипт в 3 строки:
1.загрузить файл,
2.конвертнуть содержимое в утф,
3.вернуть измененое содержимое.
и запрашивай этот скрипт вместо файла.
и будет всем счастье
извиняюсь, имелось ввиду useCodepage... надо меньше в Java сидеть со своими классами o.O
спасибо за помощь, конечно - НО ПОВТОРЯЮ ЕЩЕ РАЗ - вариант с изменением кодировки файла или созданием его копии НЕ ПОДХОДИТ. Равно как и использование скриптов на серверной части, т.к. все эти файлы зашиваются в пакет (компиленый ресурс)
Dendroid, спасибо за то, что подтолкунул к идее использовать JS для передачи XMLных нодов
P.S. FPlayer старше 7 версии тоже не подходит...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.