![]() |
Русский текст из xml, формата win1251, не отображает
Приветстсвую. Я много в поиске читал, и в Чаво посмотрел.. Кроме System.useCodePage ничего путного не нашел... Или просто темы двухгодичной давности так и не решенные нормально (наверно участники в привате дальше говорили =] )
У меня есть на сервере файл xml, он для гостевой. Его формат win1251, в него php записываются данные, русский текст, но когда ролик грузит этот xml файл в себя, то вместо русского текста там типичные квадратики... А если весь xml файл из русского текста (ну теги конечно латиницей написаны) то он вобще не отображается в ролике. Вопрос: Каким образом заставить Flash читать русский текст из xml файла, не используя System.useCodePage, и не переделывая файл в Юникод кодировку? |
Публикуя под 5-й плеер.))
А что мешает конвертнуть на сервере? Волшебное слово iconv ( функция php) Не хотите конвертить, useCodePage. Цитата:
Код:
<?php |
У меня вопрос: зачем вообще что-то делать с кодировкой? Зачем её мурыжить и создавать себе проблемы? Почему формат xml именно win, а не utf?
Ответ на вопрос в первом посте: с помощью AS3. |
__etc формат такой, как я ранее говорил, потому что "даже если поставить utf, php скрипт кодировку файла изменяет самолично на win, когда используешь параметр 'w' открытия файла", поэтому я ищу выход, как же считать из кодировки win, потому как сохранить эту кодировку utf файла невозможно (из-за интересного php скрипта который самолично кодировку изменяет =( ).
Каким образом с помощью AS3? Есть ли где-нибудь статейка на эту тему? |
я все время считываю и из текстовиков и из MySQL
где и там и там стоит utf-8 но ни разу еще php мне менял кодировку если что то iconv поможет |
Вот у меня просто волшебный php скрипт! Я только что файл сохранил в Юникоде, запустилд скрипт добавления через гесту, написал по русски. Мало того, что у меня геста не получает подтверждение загрузки LoadVars-a (так и остается на одном фрейме, хотя аглицкими буквами когда пишу все ок), так она отказывается загружать русский текст из файла. Странно, сказал я себе. Вроде кодировка Юникод... Смотрю, а файл уже кодировки win! Как так получилось не понимаю! Волшебный скрипт млин. Вот посмотрите его код, может найдете чего он мне файл кодировку меняет:
Код:
<?phpКод:
stop(); |
Цитата:
Ищи ошибку внутри флеша, где-нибудь, да useCodepage включен. |
__etc я даже самолично написал System.useCodepage = false вначале.
Ничего не дает =( Вот полюбуйтесь. До применения скрипта файл выглядел так (с кодировкой Юникод): Цитата:
Цитата:
Что же делать? Вобще интереснее всего, что php в "глокую куздру" превращает текст предыдущих сообщений только если писать русским... Может все-таки проблема с этим кодом... Который для русского текста в input? Код:
fixWMode = function(str) { |
а в 5 строке что за хитрая вещь?
может она все ломает? |
В самом скрипте в принципе все нормально.
Проблема может быть в хостинге и настройках php. Отключи transparent и проверь без фикса. |
CorC железная логика! =)) Прямо дословно перевел broken(с англ) - сломанный.
__etc также и осталось =( Но я нашел несколько признаков того, что новые данные php некорекктно записывает (вместо русского текста в новом узле китайские народные иероглифы), а старые (то есть старые узлы с русским) он оставляет как есть... Вот еще раз ярчайший пример. Прямо сейчас в Notepad++ изменил кодировку на utf-8, сделал загрузку русского текса. Работает. Потом попробовал в гесте добавить сообщение с русским текстом. Предыдущее сообщение в файле осталось нормальным, а новое записалось некорекктно... К тому же кодировка изменилась на ANSI =((( Нет ну прямо нерешимая какая-то проблема. Так и в Денвере, так и в инете! Кто-нибудь знает в чем проблема? ПС. Вот исходник. Может в нем что увидите? Я уже и не знаю чего творить чтобы он нормально с русским работал... http://lingua.h18.ru/indexx.rar Там пятый фрейм с гестой Кстати, может ли быть виной проблемы, что я в xml файле не объявил строчкой кодировку и язык самого xml файла? Как обычно так делают. |
А из броузера не пробовал отправлять? Сваргань html с формой, проставь ему utf-8 и смотри что получится.
|
Сейчас попробую... отпишусь через 10-15 минут.
|
добавь еще в пыхпых phpinfo() и посмотри, в какой кодировке приходит, чтоб не оставалось сомнений
|
Добавляет русский текст отлично, не изменяя и не коверкая старые сообщения. Но кодировку сразу снова с utf-8 на ansi меняет.
Вот что насчет кодировки в phpinfo() выдало SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate Не понимаю. Почему он кодировку изменяет?! Не будь этой проблемы все отлично бы грузило... Kikasso кстати а ты смотрел мой исходник? Может там я чего намудрил? |
Если сервер мудрит с кодировками, стало быть он так настроен - ничего с этим не поделаешь. Этим грешит русский апач, я с этим сталкивался - он мне при uploade картинки переконвертировал)). Можно что-то написать в .htaccess, но об этом лучше спрашивать техподдержку хостера. ХЗ. Я пас.
|
Kikasso =]] Почему только у меня такие проблемы? Ну почему я все делаю и почему-то невидимые ошибки да есть?! =]]
Эх ладно, буду ждать, можеть кто-нибудь знает в чем проблема... А насчет сервера так я на 3-х хостингах проверял и у себя на Денвере... ПС. Кстати ты посмотрел исходник? Там все нормально? Может все-таки увидишь, я чего там не так сделал? Люди помогите пожалуйста! Скажите что у меня не так? |
Я уже предлагал сменить хостинг.
|
__etc Имеешь ввиду что и Денвер и два других хостинга имеют одинаковые проблемы?... =0
По моему Денвер то не должен такого делать (ну с кодировкой)... Ну что же. Попробую. Попробую еще на один бесплатный. Я должен удостовериться что проблема в хостинге, и что не зря буду покупать платный. |
У меня ничего подобного на том же Денвере не наблюдается.
|
__etc ты имеешь ввиду ты протестил этот ролик со скриптом у себя и он кодировку не меняет? И русский язык грузит и добавляет? =0
Скажи пожалуйста сайт денвера, я скачаю новую версию. |
Не тестил, но по приведенному коду такого наблюдаться не должно.
Сайт http://www.denwer.ru |
Попробую денвер новый скачать. Если не поможет придется не Xml файл записывать, а как все делают-записывать сообщения через определенный символ, и после по нему в php разделять и выводить.
__etc не помогло... Хм.. что то по моему во флеше не то... Самое интересное в том, что он и в ANSI кодировке читает русский текст, но только если добавлять после русского английские сообщения. Только добавляю русское сразу все предыдущие сообщения превращаются в куча бредовых символов (точнее русский язык в пред. сообщениях). Ты не смотрел исходник? Там все нормально сделано? Люди подскажите пожалуйста тогда ссылки на исходники гостевых книг схожего с моей характера. Интересно проверить будут ли они так же глючить или нет. Может по другому придется тогда делать гесту... Не сочтите за флуд, ибо никто так и не отвечает... Кроме как во флеше я ошибки не могу нигде подозревать... Денвер новый даже скачал все равно не работает правильно с русским языком. Может кто-нибудь пожалуйста посмотреть мой исходник, и сказать, на 5-ом фрейме без ошибок загрузка и сохранение данных сделаны в гостевой книге? Или есть там что-то что мешает правильной работе гесты? |
Спокойнее, друг. Посмотрим.
|
|
1) Это новый исходник или старый? Что там опять с useCodepage? Совсем убери. закомментируй что-ли
2) pole.htmlText += ".." в цикле принципиально неправильно. Пишите Код:
str = pole.htmlText;3) вот эта конструкция: Код:
this.createEmptyMovieClip("clip"+i,this.getNextHighestDepth());Код:
var clip = this.createEmptyMovieClip("clip"+i,this.getNextHighestDepth());И уберите wmode=transparent. Где кстати форма для отправки сообщений? Что-то я ее не нашел. А так ошибок пока не вижу, так, замечания. upd: Вот это что-ли? Код:
script.load("guest.php?_nick="+_nick+"&_date="+_date+"&_mail="+_mail+"&_page="+_page+"&_message="+_message);Еще момент - всем приходящим данным в php надо делать trim(), а то получите сообщение из пробелов, переводов каретки или еще чего похуже. |
__etc не сочти за невежество... Но эти гостевые я просматривал два дня назад, и у них немного другая система... У них не xml а loadVariablesNum и еще чего-то...
Kikasso все изменил с htmlText и там подрихтовал... А так весь код правилен загрузки гесты? И отправки сообщения? Kikasso sendAndLoad я поставил так он не захотел принимать onLoad тогда. Просто не проигрывал дальше. Не хочет sendAndLoad работать. А вот trim()... В каких случаях сообщения могу придти с кучей пробелов переводов картетки и др.? В тех если юзер самостоятельно захочет так написать? |
Кроме юзеров бывают кулхацкеры, и таких полно. Эта операция обходится дешево, так что
Код:
@$text = trim($_POST['text']);sendAndLoad: Код:
my_lv.sendAndLoad( "somefile.php", my_lv );Значит Код:
my_xml = new XML();Или сразу формируй и посылай xml, это чуть сложнее вкурить, зато правильнее. MINASTIS, чем вы пользуетесь для верстки?? вот это что вообще такое: Код:
</textarea></form></title></comment></a></div></span></ilayer></layer></iframe></noframes></style></noscript>И что за джаваскрипт для впечатывания флеша?? Используйте проверенный: http://blog.deconcept.com/swfobject, но только после того как все заработает просто в object/embed. И transparent уберите. upd: ник нечаянно |
Kikasso я делаю public во флеше. А тот код который ты показал добавляет хостинг, то есть рекламу.
Вот мой код впечатывания: Код:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" id="indexx" align="middle">XML я получаю сначала из другого XML объекта... Когда сообщения загружаю. Или я совсем не так все понял?... ПС. И прошу хватит мой ник коверкать. То Minastic то Minastys. Правильно Minastis. Kikasso trip не работает... =( Я делаю Код:
@$addall = trip($addall); |
Цитата:
Прочитай пост Kikasso ещё раз. |
__etc а там же $_POST... Дошло =)))
ПС. Эй и кстати вы что все сговорились такие аватары ставить с двумя буквами?! =)) |
Цитата:
з.Ы. Сговорились. |
Название это я на форуме опечатку сделал, так то написал trim
Теперь он мне вобще просто файл очищает и не записывает в него ничего =( Вот код: Код:
<?phpP.S. Такие аватары показатель чего-то или просто для красоты?... |
Ну правильно, ты берешь addall из POST-массива, а его нет. Следовательно, $addall пуст (ошибки нет в силу @ перед выполнением).
|
__etc ты имеешь ввиду что эту строку надо после добавления в файл ставить?...
Может ли быть не восприятие русского языка из-за вот этих строчек в странице с роликом? Код:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
Вот из- за чего русские буквы не работают: wmode="transparent"
trim работает просто: Код:
<pre>http://www.php.net/manual/ru/function.trim.php За ник сорри, случайно. А насчет рекламного кода.. Что-то я не нашел открывающих тегов, только закрывающие. Наверное это у меня максон так рекламу вырезал, не вполне корректно. Чарсет страницы не должен вроде влиять на флешовые дела, у меня нормально уникодом посылалось. Хотя если шлешь GET'ом.. Цитата:
Цитата:
|
Хм... Попробовал сделать так:
Код:
<?phpТак флешка и не воспринимает русский язык... Совсем нивкакую не хочет... =(( Я изменил чарсет дык он вобще перестал принимать подтверждение загрузки php скрипта. Пришлось снова на koi переписать. >=[ Есть еще мысли что же с русским языком произошло у меня нас странице?... Ты имеешь ввиду Код:
script.sendAndLoad("guest.php?_nick="+this._nick+"&_date="+this._date+"&_mail="+this._mail+"&_page="+this._page+"&_message="+this._message, script);Кстати, почему сразу корень зла? (я убрал уже). Ведь благодаря этому в гесте пока никто не сможет писать на русском. Сейчас только символ на русском и вся геста слетит =(( Со всеми сообщениями! |
Код:
@$date = $_POST['_date'];Код:
script:LoadVars = new LoadVars();Чтобы не вводили чего не попадя, есть свойство текстового поля restrict. Данные лучше подрезать перед отправкой, но это не так просто - trim во флеше не найден. Но написан. |
Kikasso, а где у тебя указан режим POST?
|
Он не хочет без добавлений в адрес переменных эти переменные принимать. Ты показал как использовать trim и время правильное сделать?
Кстати если это действительно Get сервер перекодирует то тогда как это исправить? |
| Часовой пояс GMT +4, время: 06:34. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.