Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   XML и Flash = фигня с кодировками (http://www.flasher.ru/forum/showthread.php?t=73560)

Serzhik 25.12.2005 21:36

XML и Flash = фигня с кодировками
 
Проблема вот в чем (может, уже спрашивали, не бейте ногами:)):
При чтении данных из xml-файла бьется кодировка. В самой флешке пробовал указывать System.useCodepage = true;
Во вложении файлы:
menu.xml - файл, из которого берутся данные
menu_local (with useCodepage).swf - флешка с useCodepage = true;
menu_local (wo useCodepage).swf - флешка без useCodepage

В чем может быть проблема? Сам xml пишется с помощью PHP 4.6 (DOM XML). Все русские символы перекодируются с помощью iconv(). Для iconv пробовал указывать разные кодировки (windows-1251, ISO-8859-1, koi8-r). Нормально xml генерится только с кодировкой win1251. Где косяк? :confused:

Antares 25.12.2005 22:28

Встречался с таким, победил, руками указав System.useCodepage = false;

Antares 25.12.2005 22:29

Хотя стоп. iconv у тебя из какой в какую перекодирует?

Serzhik 25.12.2005 23:20

Цитата:

Сообщение от Antares
Хотя стоп. iconv у тебя из какой в какую перекодирует?

useCodepage = false не помогает (то же самое, когда я не указываю вообще useCodepage)

Перевод делал в utf-8 из win1251, ISO-8859-1, koi8-r (в порядке бреда указывал и win1252:))

Сами данные читаются из базы. База в utf-8. Просто на страницу данные выводятся нормально (у меня предпросмотр перед выгрузкой в xml)
У iconv() input, output и internal кодировки - ISO-8859-1. Пробовал принудительно указывать input win1251, output - utf-8. Тоже не помогло.

У меня уже была похожая проблема. Там все решилось iconv("ISO-8859-1", "utf-8", $str); Здесь такой вариант не проходит. Возможно, потому что хостинг в данном случае другой. До некоторого времени там вообще не было поддержки iconv (включили по моему запросу).

Antares 26.12.2005 00:46

У меня соответственно один вопрос. Если в БД у нас utf-8, то укажи на всякий при выводе хедером, что ты используешь uft-8, соответственно, про кодировки во Flash можно будет забыть, равно как и про iconv.

Потому что я хоть убей не понимаю, чего ты хочешь добиться, конвертируя строку в utf-8 (что априори, т.к. ты упомянул, как настроена БД) iconv-ом как $str = iconv("ISO-8859-1", "utf-8", $str);

Это примерно то же самое, что на встречу с японцем пригласить переводчика с итальянского :)

Serzhik 26.12.2005 08:59

Цитата:

Сообщение от Antares
У меня соответственно один вопрос. Если в БД у нас utf-8, то укажи на всякий при выводе хедером, что ты используешь uft-8, соответственно, про кодировки во Flash можно будет забыть, равно как и про iconv.

Потому что я хоть убей не понимаю, чего ты хочешь добиться, конвертируя строку в utf-8 (что априори, т.к. ты упомянул, как настроена БД) iconv-ом как $str = iconv("ISO-8859-1", "utf-8", $str);

Это примерно то же самое, что на встречу с японцем пригласить переводчика с итальянского :)

Мда, по поводу итальянца - это верно :D
Просто от безнадеги я уже не знаю, что делать... Кодировка в базе верная, выдача на экран происходит норм! В xml тоже выгружается все нормально (по крайней мере, IE и Visual Studio .NET ошиюки синтаксиса не находят). Так почему тогда флеш не может корректно прочитать этот файл?
А по поводу хедера не понял: я ж не на экран выдаю информацию, а в файл. Причем используя DOM XML, который по умолчанию генерит файл именно в utf8. На всякий случай попробовал результат iconv вывести на экран (установил в браузере кодировку UTF8): все корректно вывелось в этой кодировке. А в флеше опять кракозябры!
По поводу useCodepage: включение/отключение (true/false) этой опции на хостинге не имеет никакого значения, файл одинаково читается кракозябрами. Хостинг под *nix'ом

----------------------------------------------

Теперь по поводу самой флешки: попробовал trace'ом вывести данные, которые читаются из файла. Так вот при UseCodepage = false все читается отлично, но при этом не выводится (в выпадающем списке пустые строчки). Хотя значения, которые присваиваются этим мувикам, правильные

MIX-er 26.12.2005 09:14

я когда мучался с тож е проблемой то после кодировки при открытии редактором файл представлял из себя какую то белеберду... но работал...

Serzhik 26.12.2005 09:51

Немного разобрался: проблема была в том, что для поля, в которое происходит вывод строк меню (мувик с текстовым полем), стояли настройки Character->Specify Range только для латиницы. Добавил кирилицу, убрал useCodepage (если оставить useCodepage=true, то выводится будут кракозябры) - на локальной машине все заработало. А вот на хостинге все равно кракозябры!!! Фонт в этом текстовом поле Arial (пробовал Arial Cyr - тоже самое)

===================================================

Это полный пердимонокль!!!!!!
Все получилось, но почему заработало, я, хоть убейся об стену, не понимаю!!!!
1. Сделал выгрузку с преобразованием iconv("ISO-8859-1", "utf8", $str)
2. useCodepage = true;
3. Паблиш для FlashPlayer 7.0, AS 2.0

И теперь все ок!!! Но почему??? Откуда там ISO-8859-1??? Сами страницы у меня в win1251, база в utf8. Правда, внутрення кодировка iconv ISO-8859-1. Неужели из-за этого?
Причем самое интересное: теперь IE выводит саму xml с кракозябрами (правда, теперь мне на это наплевать, главное, чтобы флеш нормально читал). Но вопрос-то остается: получается, что флешка читает xml в какой-то кривой кодировке? Или как?
Гуру! Объясните, а то чокнусь:)

Dezept1p 28.12.2005 15:45

сам фаил xml сохранить Save as ->(unicode)

nyctota 28.12.2005 21:33

Попробовал. Не понравилось =/
В самом деле, как только эмбедишь шрифт -- то, что приходит с сервака становиться нечитабельным.
Хотя, если сохранить текстовый файл в Юникоде, то его читает и отображает нормально. Что за!? Я в шоке.


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

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