На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
Страницы: (4) 1 [2] 3 4  все  ( Перейти к последнему сообщению )  
> Траблы с кодировкой
    хм... даже затрудняюсь ответить что сделал :huh: , но вроде норм стало.
      Цитата ViktorXP @
      но если в делфи то тут единственное что можно сделать это пересоздать

      что то мне подсказывает, что если открыть описание формы в блокноте (и там будет при этом текст, а не вопросы) и сохранить из блокнота в ansi, то пересоздавать не нужно будет
        Цитата ViktorXP @
        бывает так что при utf8 кодировке в начале файла ide не записывает сигнатуру

        не наговаривай на ide
        просто, как и в этом случае, пользователь не запоминает что делает и где что настраивает,
        а потом рассказывает что где то что то не работало
        типа метод научного тыка 8-)
          Цитата vicis @
          не наговаривай на ide

          у меня просто было подобное. когда сначала файл в ansi с русским текстом. а потом перекодируеш его в utf8
            Цитата
            что то мне подсказывает, что если открыть описание формы в блокноте (и там будет при этом текст, а не вопросы) и сохранить из блокнота в ansi, то пересоздавать не нужно будет


            Цитата
            у меня просто было подобное. когда сначала файл в ansi с русским текстом. а потом перекодируеш его в utf8


            ну да. Это то я делал,но чет не понятно как то взаимосвязано. Типо ide не в силах перекодировать и нужна помощь? Я не с блокнотом(в блокноте не понятно как кодировку менять),а с notepadOM++ игрался с кодировкой. Может баг какой-то.
            пРИчем я игрался с 1 проектом тока, после чего все остальные нормальными стали. :blink:
              Цитата gen.izh @
              пРИчем я игрался с 1 проектом тока, после чего все остальные нормальными стали.

              значит прикол был в настройках.
                Цитата gen.izh @
                в блокноте не понятно как кодировку менять

                я писал как менять
                но сначала как определить в какой кодировке он:

                1.открываеш файл блокнотом и потом вызываещ диалог Сохранить как
                если в этом диалоге предлагается сохранить в ansi, то значит и файл сейчас в ansi
                нажмёш Ok то в этой кодировке и останется
                а выбереш другую, например utf8, то файл сохранится уже в utf8
                при этом текст останется читаем
                ну и наоборот

                2. вариант
                открой файл шестандцатиричным редактором
                например far - > F3 - -> F4
                и если видиш в в начале файла
                EF BB BF
                то он в utf8

                подробнее читаем здесь
                http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4

                а именно

                Цитата
                Порядок байтов
                В потоке данных UTF-16 старший байт может записываться либо перед младшим (UTF-16 Big Endian), либо после младшего (UTF-16 Little Endian). Иногда кодировку Юникода Big Endian (UTF-16BE) называют Юникодом с обратным порядком байтов. Аналогично существует два варианта четырёхбайтной кодировки — UTF-32BE и UTF-32LE.

                Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов. Файлы, следующие этому соглашению, начинаются с таких последовательностей байтов:

                UTF-8
                EF BB BF
                UTF-16BE
                FE FF
                UTF-16LE
                FF FE
                UTF-32BE
                00 00 FE FF
                UTF-32LE
                FF FE 00 00
                Сообщение отредактировано: vicis -
                  Тоже сталкивался с тем, что слетела кодировка в результате ковыряния настроек (меню Tools->Options), и все русские надписи отображались абракадаброй. Как это произошло, толком и не понял. На одном компьютере с настройками по умолчанию все запускается корректно, на другом - вместо русских букв знаки вопроса (в последующем какую я абракадабру только не получал, пока не добился нормального отображения русских букв).

                  Как вернуть настройки на место?
                  Для уже созданной страницы у меня это сделать не получилось.
                  Вот как вернуть настройки для вновь создаваемой страницы.

                  1. Tools->Options->Editor Options->Default settings for new file:
                  Text encoding: UTF-8
                  Text Format: Windows
                  Character Set: Cirillic

                  2. Tools->Optoions->PHP->Default Sharset: utf-8

                  Теперь для вновь создаваемой страницы все надписи на русском будут отображаться корректно.
                  Что удивительно, значение свойства страницы "Encoding" может быть любое. И кстати, от его изменения ничего не меняется (кроме надписи в html-коде типа "charset=iso-8859-1", зависит от выбранной кодировки).
                  Сообщение отредактировано: DoctorGauss -
                    Цитата DoctorGauss @
                    Что удивительно, значение свойства страницы "Encoding" может быть любое. И кстати, от его изменения ничего не меняется (кроме надписи в html-коде типа "charset=iso-8859-1", зависит от выбранной кодировки).

                    просто в данной технологии много мест перекодировки может быть

                    - кодировка указа в странице
                    - кодировка указана в Apache
                    - кодировка указана в Php
                    - кодировка указана в редакторе DelphiForPhp
                    а ещё есть куча кодировок в базе MySql, начиная от кодировок указанных при подключении и заканчивая кодировкой отдельного поля

                    отсюда постоянная путаница

                    вот вариант
                    если в папку проекта бросить .htaccess
                    с таим текстом
                    php_value default_charset utf-8
                    #php_value default_charset windows-1251

                    то сервер будет выдавать страницы в кодировке utf-8
                    независимо что там в странице в заголовке написано

                    тут ещё можно глянуть
                    в википедии
                    Определение кодировки браузерами
                      Еще одна любопытная ситуация.
                      На двух компьютерах WindowsXP SP3 (англ.) + MUI установлен Delphi for PHP.
                      На одном компьютере (ПК-1) с настройками по умолчанию проблем с русской кодировкой нет, на другом (ПК-2) - есть.
                      Пришлось на ПК-2 настройки поменять, чтобы не было проблем с кодировкой для новых страниц. Все настройки приведены ниже.

                      Скрытый текст
                      Настройки на ПК-1 в D4PHP:
                      1. Tools->Options->Editor Options->Default settings for new file:
                      Text encoding: ANSI
                      Text Format: default
                      Character Set: default

                      2. Tools->Optoions->PHP->Default Sharset: utf-8

                      Настройки на ПК-2 в D4PHP:
                      1. Tools->Options->Editor Options->Default settings for new file:
                      Text encoding: UTF-8
                      Text Format: Windows
                      Character Set: Cirillic

                      2. Tools->Optoions->PHP->Default Sharset: utf-8

                      Ну и, собственно, проблема:
                      страница, созданная на ПК-1, некорректно отображается на ПК-2. Вместо русских букв - знаки вопроса. В самой среде D4PHP все отображается корректно. Проверял в FF 3.6.6 и IE 6.0. Попытки изменить отображаемую кодировку в браузере ни к чему не привели. При изменении кодировки в PHP DBG Listener (локатор в трее, появляется при запуске D4PHP) и последующем запуске проекта (Run) появляется ошибка. В логах это записано так:

                      Цитата
                      Failed to open or create an instance of IDE CoClass {00000000-0000-0000-0000-000000000000}. OSERR (0x80040154) 'Класс не '.


                      После перезапуска среды D4PHP проект запускается нормально (без ошибки), при этом в PHP DBG Listener указывается измененная кодировка. Вот только знаки вопроса вместо русских букв остаются.

                      В реестре Windows HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage значения 1251, 1252, 1253, 1254 установлены в c_1251.nls (на обоих ПК).

                      Вопрос, откуда у меня растут руки как сделать так, чтобы страница отображалась корректно на обоих ПК?
                      У меня пока только один вариант - пересоздать страницу с настройками ПК-2. Еще варианты?

                      Upd.
                      Попробовал (по советам в этой ветке форума) в Notepad++ преобразовать кодировку файла с расширением *.xml.php в utf-8, а затем в строках типа
                      ExpandedWrap disabled
                        <property name="Caption"><![CDATA[&# 1058;&# 1086;&# 1082;...]]></property>

                      заменить коды в квадратных скобках после CDATA, собственно, на сами названия на русском языке. Ориентировался по имени объекта.
                      На всякий случай, все файлы проекта пересохранил в этой кодировке.
                      В принципе, проблемы с кодировкой были решены, но способ, конечно, трудоемкий.

                      P.S. После CDATA в скобках между знаками # и цифрами пробелов не было. Эти пробелы поставил я, иначе вместо кодов отображалось русское название.
                      Сообщение отредактировано: DoctorGauss -
                        Цитата DoctorGauss @
                        Попробовал (по советам в этой ветке форума) в Notepad++ преобразовать кодировку файла с расширением *.xml.php в utf-8, а затем в строках типа

                        кстати о этом. одна из больших проблем DFP это не умение работать с файлами в "UTF-8 без бом". мало того что он кодировать в него не может так еще когда сам перекодируеш (все тем же Notepad++) то он уже не видит русские буквы. А "бом" уж очень сильно портит стилизацию сайта если использовать шаблоны.
                          Цитата ViktorXP @
                          ...одна из больших проблем DFP это не умение работать с файлами в "UTF-8 без бом" ... когда сам перекодируеш (все тем же Notepad++) то он уже не видит русские буквы.

                          Странно, но я преобразовал в Notepad++ именно в utf-8 без BOM (извиняюсь, что сразу не уточнил это в своем предыдущем сообщении) - проблемы с кодировкой исчезли. Т.е. набирать по-русски заново все-таки пришлось, но кодировка стала отображаться нормально. Или я неправильно понимаю суть проблемы?
                          Сообщение отредактировано: DoctorGauss -
                            после того как ты нажал на кнопку сохранить в DFP, он обратно прицепил "БОМ"
                              Так как тема уже поднималась, напишу здесь же.

                              Мои настройки
                              Editor Options
                              Text Encoding - Ansi
                              Text format - Windows
                              Char set - cirillic

                              PHP
                              default charset - windows-1251
                              Language - russian


                              Для формы Encoding - Cirillic Windows - Win1251

                              Провел Интернационализацию с помощью Визарда на русский.

                              При попытке ввода русских значений для закладок в PageControl среда выдает ошибку

                              unserialize() [<a href='function.unserialize'>function.unserialize</a>]: Error at offset 36 of 37 bytes C:\Users\user\Documents\RadPHP\Projects\~2E2AC9CB.php Line:210

                              Если запустить приложение, то либо едет страница, либо вместо русских символов знаки "????"

                              Если руками менять в *.xml.php, то форма так же едет.

                              Уже и не знаю что делать.
                                RadPhp XE

                                PHP
                                default charset - utf8

                                Editor Options
                                Text Encoding - utf8

                                остальное не трогаем

                                делаю Интернационализацию на три языка:
                                англ
                                укр
                                рус

                                перелючаю форму в нужный язык и для каждого в PageControl пишем свои значение на своём языке
                                сбоев не наблюдаю
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 [2] 3 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0466 ]   [ 16 queries used ]   [ Generated: 23.04.24, 22:48 GMT ]