Просмотр полной версии : Кодировка и отображение текста
Angelinka
18.05.2009, 15:19
Здравствуйте!
У меня вечный вопрос для флешеров, которые работают с интернетом.
Если передавать переменную во флеш через браузер, то флеш не отображает русский текст в ИЕ. Текст передается в кодировке UTF-8, так что, все должно, по логике вещей, работать. Работает во всех браузерах, кроме IE. System.useCodepage = true; не оказывает никакого влияния. Если в IE в панеле выбрать вручную кодировку UTF-8 - то текст отображается, но все символы самого сайта становятся иероглифами.
Облазила весь форум, нигде ничего ясно не написано. Либо пишут, что это уже обсуждалось - ищите, либо не могут дать ответ. Пожалуйста, помогите же кто-то. Ведь с этой проблемой сталкиваются многие разработчики.
Большое спасибо.
Stargazer
18.05.2009, 17:55
System.useCodepage никогда не используйте.
Проблема у вас вот в чём.
Вы переменную передаёте во флеш через что? Через браузер. А кодировка страницы какая? Явно не UTF-8. А вам нужен именно он.
Если переменная не длинная - вбейте содержимое через /uXXXX.
Angelinka
18.05.2009, 18:22
Простите, а можно подробнее на счет /uXXXX, а то мне не знаком такой прием. Спасибо.
Stargazer
18.05.2009, 19:13
Подробнее и вместе с тем профессионально - сложно. Потому что я мало занимаюсь js (хотя с такой же как у вас проблемой сталкивался, но давно. не помню точно, как решил её). Смысл в том, чтобы указать данные именно в формате юникода.
Вот что я сейчас нашёл в поиске:
1. %uXXXX (где ХХХХ - это кодировка символа в юникоде) позволяет записать символ из юникода. (то есть, я неправильно подсказал насчёт слэша - вам нужен именно % ).
2. Советуют использовать encodeURI(). С функцией знаком, но деталей её работы уже давно не смотрел и не вспоминал.
Angelinka
18.05.2009, 19:45
Получается, что смысл этого всего - перекодирование, да?
Ну так я и так подаю текст в юникоде, кодирую через PHP iconv.
Покажите заголовок вашей странички.
Angelinka
18.05.2009, 20:36
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
charset=windows-1251
а говорите utf-8 =)
Angelinka
18.05.2009, 20:44
я говорю, что данные переменных передаю в utf-8
Angelinka, Вы грузите. Поменяйте кодировку в заголовке.
Лучше через dreamweaver
Angelinka
18.05.2009, 22:06
И весь текст на странице станет не читабельным. Мне нужно чтобы эта флешка работала на всех сайтах, а я не могу знать какая там у них кодировка. Эта флешка будет распространятся по сети.
Angelinka, вам рассказать, как сделать так, чтобы при смене кодировки Ваш html текст не пропал?
Если Вы хотите не учитывать кодировку браузера в принципе - нужно написать во флеше анализатор и перекодировщик текста. Это не сильно сложно сделать. Но это - кривое решение.
Stargazer
18.05.2009, 22:31
Angelinka, вы не понимаете сути дела. Вы воспользовались конвертированием части страницы в формат в UTF-8, но при этом заголовки вашей страницы указывают, что содержимое этой страницы записано в cp1251. Понимаете, откуда берётся проблема?
Почитайте про %uXXXX и про encodeURI(). Это то, что вам нужно.
(Upd: точнее почитайте про encodeURI и решите, подходит ли он вам. Либо пишите вручную через символ процента.)
Добавлено через 1 минуту
Если Вы хотите не учитывать кодировку браузера в принципе - нужно написать во флеше анализатор и перекодировщик текста. Это не сильно сложно сделать. Но это - кривое решение.
Полноте вам, господин aksios. Зачем так пугать людей?
Полноте вам, господин aksios. Зачем так пугать людей?
По условию, как я понимаю, флешка должна работать на произвольном браузере с произвольными настройками (включая отключеный js), более того, с абсолютно разных сайтов, на которых видимо нет возможности менять содержимое странички.
Где то так. Так вот, по Вашему, я пугаю?
Stargazer
18.05.2009, 23:21
Так вот, по Вашему, я пугаю?
Естественно. Потому что есть простейший способ: вписать всю вручную через (возможно, это называется escape-последовательности. а возможно это и не совсем они) символы юникода.
Вы были так уверены, что мне пришлось перепроверить самому.
Вот строка:
<param name="FlashVars" value="russianText= & #1071;& #1041;& #1083;& #1054;& #1050;& #1054;">
Флеш замечательно читает русское слово "ЯБлОКО" вне зависимости от кодировки и без помощи джаваскрипта.
Angelinka
19.05.2009, 04:55
<param name="FlashVars" value="russianText= & #1071;& #1041;& #1083;& #1054;& #1050;& #1054;">
Большое спасибо. Я наконец поняла в каком формате передавать текст. Будем пробовать.
Stargazer
19.05.2009, 14:35
Пожалуйста. В итоге это оказались не слеши и не проценты. Всё смешалось в голове от разных языков.
Между & и #, естественно, не должно быть пробелов. (если бы я написал без пробелов - форум бы перевёл эти коды в символы и было бы видно то самое "яблоко").
Angelinka
25.05.2009, 18:46
Проблема только в том теперь, что вместо 6 символов в слове яблоко теперь 36. А если нужно строку в 30 символов или больше... Неужели нет другого способа?
Stargazer
25.05.2009, 20:42
Проблема только в том теперь, что вместо 6 символов в слове яблоко теперь 36. А если нужно строку в 30 символов или больше... Неужели нет другого способа?
Вы ведь хотели решение, полностью независимое от окружения? Это оно и есть.
Найдите в Интернете скрипт, который будет перекодировать (я где-то видел, но не хочу искать). Копируете в поле результат - получаете строку, закодированную символами юникода. Осталось вставить её в ваш хтмл.
Если хотите - воспользуйте джаваскриптом, смотрите в сторону encodeURI или других функций, которые дадут нужный результат. Но тогда ваша флешка будет зависит от доступности джаваскрипта.
Angelinka
12.06.2009, 18:24
Как оказалось после всего сказанного, в опере это не работает. Я уже не знаю что делать, я была в шоке когда увидела в опере знаки вопроса. Проверяла много раз - ничего. Я уже потеряла надежду на выход из ситуации :(
Добавлено через 21 минуту
В общем, ребята, если у кого-то есть проблемы с передаваемыми переменными во флеш - используйте лучше SWFObject и через JS вставляйте флеш на страницы. Тогда и с текстом проблем нет, и стандарты поддерживаются, да и код по-проще будет даже.
Stargazer
12.06.2009, 23:26
Как оказалось после всего сказанного, в опере это не работает...
...используйте лучше SWFObject и через JS вставляйте флеш на страницы. Тогда и с текстом проблем нет, и стандарты поддерживаются, да и код по-проще будет даже.
Конкретно этот вариант не может не работать в Опере, потому что сочетание & и # является документированной возможностью хтмл и используется уже очень давно. Видимо, вы что-то другое не учли.
К тому же - снова повторюсь. Я уже решал эту проблему таким образом. А свои решения я всегда тестирую на совместимость с IE, Opera и Firefox.
есть флэш-сайт и xml файл в котором прописаны пути фоток, тексты, меню и т.п.. не могу сделать русское отображение букв.. изначально была кодировка iso-8859-1, пробовал менять на windows-1251 и utf-8 - не помогает - остается пустое поле, как можно это решить?
Stargazer
04.07.2009, 02:16
как можно это решить?
Решить именно сменой кодировки содержимого xml на формат UTF-8. Обратите внимание, что имеет значение, не запись о кодировке в тексте xml, а фактическая кодировка символов в файле.
Решить именно сменой кодировки содержимого xml на формат UTF-8. Обратите внимание, что имеет значение, не запись о кодировке в тексте xml, а фактическая кодировка символов в файле.
Stargazer, я не могу понять, извините, а как можно так сохранить? как-то в dreamweaver..?
В блокноте - Файл >> Cохранить как >> Кодировка (cамый нижний селектор) >> UTF8
не ребят, чет не получается все равно, делал, как говорили, может кто-нибудь сможет помочь, пожалуйста, разобраться в правильном отображении русской кодировки.. вот ссылка на файлы: http://***************/files/251921004/TM_22137.rar.html файл "22137_main.xml" - там практически все отображение текста сайта
А шрифты с кириллицей внедрены (embed)?
А шрифты с кириллицей внедрены (embed)?
я шрифты которые в меню заменял на arial в рабочей среде flash, скомпилировал фильм, но не сохранял исходник сам..
Я спрашивал не про то, какой шрифт, а внедрена ли кириллица. Я думаю - нет. Нет символов кириллицы во флэшке - нет и русских слов, даже если Вы все правильно передаете в xml. Латинские символы нормально отображаются?
Я спрашивал не про то, какой шрифт, а внедрена ли кириллица. Я думаю - нет. Нет символов кириллицы во флэшке - нет и русских слов, даже если Вы все правильно передаете в xml. Латинские символы нормально отображаются?
латинские символы все нормально, отображаются
все спасибо, разобрался в cs4 правка текста properties/character embedding
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.