Php default charset windows 1251

Кодировка windows 1251 в сайтостроении

Кодировка windows 1251 была создана в начале 90 годов для русификации программных продуктов, выпускаемых корпорацией Microsoft :

  • 0xFF (25510) – это код, который зарезервирован для символа «я». В программах, которые не поддерживают чистый 8-ой бит, часто возникают непредсказуемые проблемы;
  • Нет псевдографики, которая присутствует в KOI8 , CP866 .

Ниже приведены символы из Code Page 1251 или сокращенно СР1251 ( числа под символами являются кодом в шестнадцатеричной системе такого же символа в Юникоде ):

Кодировка windows 1251 в html

Нередко у web-разработчиков и блогеров, обладающих различной квалификацией возникает проблема с кодировкой страниц: вместо подготовленного текста появляются неизвестные, нечитаемые символы. Чтобы разобраться с данной проблемой, необходимо понимать суть термина « кодировка страницы ».

Текст в памяти компьютера хранится в виде определенного количества байт, а не в том виде, в котором он отображается в текстовом редакторе. Каждый байт является кодом, который соответствует одному символу. Для того чтобы текст на странице отображался как следует, нужно сообщить браузеру, какую таблицу кодов для расшифровки и отображения он должен использовать.

Таблица кодировок не является универсальной, то есть, для расшифровки текста необходимо использовать ту, которая соответствует кодировке символов:

— между тегом и закрывающим его нужно прописать — исходя из этой строки, браузер будет использовать символы русского алфавита для отображения текста на странице.

Кодировка windows 1251 в PHP

Ни для кого не является тайной, что генерация страниц проходит путем выборки и использования какой-то части информации, которая хранится в базе данных. При написании сайта на PHP , чаще всего это mysql :

Для согласования расшифровки необходимо выполнить функцию mysql_query(«SET NAMES cp1251») – это означает, что преобразование из машинного кода будет осуществляться согласно таблице cp1251 .

Кодировка windows 1251 в htaccess

При создании сайта, предварительно настроив кодировки в шаблонах и базах данных, все равно может всплыть проблема некорректного отображения информации в браузере.

Для того чтобы для веб-ресурса была задана кодировка виндовс-1251 , необходимо найти ( или создать ) файл .htaccess . Это файл, который хранит в себе дополнительные настройки и описания конфигураций web-сервера.

В нем для установки кодировки следует прописать следующие строки:

  • DefaultLanguage ru;
  • AddDefaultCharset windows-1251;
  • php_value default_charset «cp1251».

Таким образом, для корректного отображения текста должны совпадать его кодировка и таблица кодов, с помощью которой браузер будет расшифровывать символы. Для текстов, написанных на славянских языках, необходима win 1251 кодировка. Важно помнить, что элементы страниц и баз данных должны быть описаны с помощью одной таблицы кодов.

default_charset в php.ini

hussar

In code we trust!

default_charset в php.ini

Народ подскажите плз, как в этом параметре (default_charset) прописывать виндовую кодировку. Если koi8-r так скорее всего и пишется, то как прописывать win-1251 или cp1251, и как юникод? И вообще можно ли это делать?

RomikChef

Guest
Новичок

>И вообще можно ли это делать?

Для php-gtk можно делать.

Guest

; As of 4.0b4, PHP always outputs a character encoding by default in
; the Content-type: header. To disable sending of the charset, simply
; set it to be empty.
;
; PHP’s built-in default is text/html
default_mimetype = «text/html»
default_charset = «windows-1251»

Читайте также:  Python dev windows install

2: hussar
А зачем оно тебе вообще надо? Это только лишь определяет кодировку по умолчанию, если ты сам не сделал этого при помощи META или соотв. хэдера. Т.ч. чем мучать php.ini, выдай любыми подручными средствами php (да хоть echo) META HTTP-EQUIV=»Content-Type» CONTENT=»text/html; charset=windows-1251″ или, для юникода, charset=utf-8.

Apache Manager

Guest

Очень рото все , если юзаешь апач, то в файле .htaccess
пропиши вот это

AddDefaultCharset windows-1251 тока в той папке де у тя скрипты лежат =)

hussar

In code we trust!

Ок, спасибо за объяснения Попробую сделать. А надо мне это для того, что я пытаюсь понять в каком месте у меня сбиваются кодировки. Есть программа которая через форму которая передает данные в MS SQL SERVER 2000, данные передаются и даже выводятся обратно, но в самой базе при просмотре таблиц — это нечитаемые кракозябры , и иногда при выводе тоже некоторые кирилические буквы заменяются на латинские. Вот такая проблема и я не могу понят в чем тут дело то-ли в базе то ли в кодировке страницы, то-ли в PHP.

Если кто-то сталкивался с подобной проблемой, буду очень благодарен за совет

Настройка параметров PHP

  • В первом случае PHP функционирует как модуль веб-сервера Apache, поэтому настройки PHP необходимо указывать в файле .htaccess.
  • Во втором случае настройки PHP необходимо указывать в файле php.ini, который располагается в директории cgi-bin вашего сайта.

По умолчанию на новых серверах PHP работает в режиме mod_php, но при желании вы можете подключить режим mod_cgi, воспользовавшись нашей инструкцией.

Настройка опций в файле .htaccess

Директивы необходимо добавлять в самый конец или в самое начало файла, вне блоков кода . .

apc.cache_by_default

APC — акселератор PHP, использование которого увеличивает производительность интерпретатора за счет кэширования. В отдельных случаях, однако, может потребоваться его отключение — например, если скрипты не выполняются корректно из-за переполнения кэша.

Управление APC осуществляется директивами:

default_charset

Директива указывает кодировку по умолчанию (например, cp1251, utf-8, koi8-r) для всех выдаваемых страниц.

display_errors

Директива указывает, требуется ли выводить ошибки на экран вместе с остальным выводом, либо ошибки должны быть скрыты от пользователя.

Включение и выключение осуществляются следующим образом:

log_errors

Опция позволяет включить логирование ошибок php с их записью в произвольный файл (в примере errors.log). При указании пути к файлу замените u и user на первую букву вашего логина и сам логин.

magic_quotes_gpc

Волшебные кавычки (Magic Quotes) — это процесс автоматического экранирования входящих данных PHP-скрипта. Если опция включена, то одинарные (‘) и двойные («) кавычки и обратный слэш (\)экранируются обратным слэшем автоматически.

Включение и выключение magic_quotes осуществляется директивами:

mail.add_x_header

Опция позволяет включить логирование отправки почты из скриптов сайта. Логи будут содержать полный путь до скрипта, адрес получателя и заголовки. При указании пути к файлу, в который будут записываться логи (mail.log), замените u и user на первую букву вашего логина и сам логин.

max_input_vars

Директива указывает, сколько входных переменных может быть принято в одном запросе. Например:

mbstring.func_overload и mbstring.internal_encoding

Для большинства CMS используются значения:

Однако для корректной работы сайтов на старых версиях CMS Битрикс требуются следующие параметры:

opcache.revalidate_freq

Отключение OpCache (настройка требуется для CMS Битрикс):

pcre.recursion_limit

Устанавливает лимит на рекурсию.

post_max_size

Опция устанавливает максимально допустимый размер данных, отправляемых методом POST. Также это значение также влияет на загрузку файлов — для загрузки больших файлов оно должно быть больше значения директивы upload_max_filesize.

Читайте также:  Safe in cloud linux

register_globals

Директивы для включения/выключения глобальных переменных:

request_order

Директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST.

upload_max_filesize

Устанавливает максимальный размер закачиваемого файла.

Настройка опций в файле php.ini

allow_url_fopen

Опция включает поддержку оберток URL (URL wrappers), которые позволяют работать с объектами URL по протоколам ftp или http как с обычными файлами.

Включение опции (для отключения значение = 0):

apc.cache_by_default

APC — акселератор PHP, использование которого увеличивает производительность интерпретатора за счет кэширования. В отдельных случаях, однако, может потребоваться его отключение — например, если скрипты не выполняются корректно из-за переполнения кэша.

Отключение APC (для включения значение = 1):

default_charset

Указание кодировки по умолчанию:

display_errors

Включение вывода ошибок (для выключения значение = off).

magic_quotes_gpc

Отключение Magic Quotes (для включения значение = 1):

mail.add_x_header

Включение логирования отправки почты из скриптов сайта. В директиве mail.log указывается путь к файлу, в который будут сохраняться логи (замените u и user на первую букву вашего логина и сам логин).

max_input_vars

Изменение количества вводимых переменных:

mbstring.func_overload и mbstring.internal_encoding

Настройки для CMS Битрикс:

opcache.revalidate_freq

Отключение OpCache (настройка для CMS Битрикс):

pcre.recursion_limit

Лимит на рекурсию:

post_max_size

Максимальный размер данных, отправляемых методом POST. Это значение также влияет на загрузку файлов — для загрузки больших файлов оно должно быть больше значения директивы upload_max_filesize.

register_globals

Отключение Register Globals (для включения значение = 1):

request_order

Регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST.

upload_max_filesize

Устанавливает максимальный размер закачиваемого файла.

Опции, которые не могут быть изменены

К настройкам PHP, изменение которых невозможно в рамках виртуального хостинга, относятся:

Директива Default_charset

Директива Default_charset указывает кодировку по умолчанию для всех PHP документов. Наиболее часто используються следующие кодировки символов: UTF-8, ASCII, Windows-1251 (CP1251).
Пример использования:
В зависимости от версии интерпретатора PHP, директива Default_charset имеет разные значения по умолчанию, поэтому не рекомендуется оставлять параметр директивы пустым.

Начиная с версии PHP 5.6 значение по умолчанию является UTF-8 и используется для большинства функций, в частности и для функций Mbstring, если кодировка не изменена в параметрах вызова данных функций. Если директива Default_charset имеет пустой параметр, то кодировка PHP документов определяется директивами AddDefaultCharset, AddCharset в файле .htaccess.
Кодировка, указанная в директиве Default_charset используется для стандартного заголовка Content-Type, отправляемого PHP, если этот заголовок не переопределен вызовом функции Header.

Проверить статус директивы можно с помощью функции Ini_get:
Директива Default_charset относиться к режиму PHP_INI_ALL, поэтому значение может быть установлено отовсюду (более детально в статье: Установка параметров конфигурации PHP).

Кодировку можно также изменить непосредственно в исполняемом файле PHP с помощью функции Ini_set:
или в настройках файла .htaccess:
Будьте внимательны при написании параметра директивы, поскольку системных ошибок не будет, а вывод информации испортиться:

Установлен устаревший параметр PHP mbstring.internal_encoding и его значение конфликтует

Обновили модуль обновления, появилось сообщение

Цитата
Установлен устаревший параметр PHP mbstring.internal_encoding и его значение конфликтует со значением параметра default_charset. Пожалуйста, исправьте значения указанных параметров или обратитесь в службу технической поддержки вашего хостинга..

Ответ от техподдержки: Параметры mbstring.internal_encoding, default_charset в конфигурации PHP и кодировка сайта должны быть одинаковыми

Сайт на windows-1251

Подскажите, пожалуйста, как поправить? в каких файла?

Цитата
Вячеслав Любовин написал:
Подскажите, пожалуйста, как поправить? в каких файла?

P.S. После правок в /etc перезагружай http

Цитата
Андрей Николаев написал:
Для Bitrix Env смотри там: Код/etc/php.d/bitrixenv.ini
Цитата
Андрей Николаев написал:
Код/home/bitrix/www/bitrix/php_interface/dbconn.php

Может что-то еще забыл?

Цитата
Вячеслав Любовин написал:
Параметры mbstring.internal_encoding, default_charset в конфигурации PHP и кодировка сайта должны быть одинаковыми

интересно а как быть в ситуации когда на серваке есть сайты и utf 8 и 1251 кодировки

default_charset для всех один ведь и получается сайты надо переводить с 1251 на utf-8

Мне вот по своим потребностям не нужен default_charset — и теперь чтобы поставить обновления надо в php.ini выставить default_charset cp1251 затем перегрузить апач, установить обновления, закомментировать default_charset и снова рестартовать апач.

В ТП ответили что не дают обновляться ибо «может поломаться ваш сайт» — бред просто. Если уж от этого поломается я сам как нибудь разберусь но не давать обновляться несмотря на действующую купленную лицензию это зашквар какой то.

Да, тест системы полностью проходит без ошибок и без default_charset cp1251 но Site-Updater имеет собственное мнение ?

Цитата
Alexander Falaleev написал:
Мне вот по своим потребностям не нужен default_charset — и теперь чтобы поставить обновления надо в php.ini вытавить default_charset cp1251 затем перегрузить апач, установить обновления, закомментировать default_charset и снова рестартовать апач.

В ТП ответили что не дают обновляться ибо «может поломаться ваш сайт» — бред просто. Если уж от этого поломается я сам как нибудь разберусь но не давать обновляться несмотря на действующую купленную лицензию это зашквар какой то.

Да, тест системы полностью проходит без ошибок и без efault_charset cp1251 но Site-Updater имеет собственное мнение ?

Доброго всем дня. Давайте по порядку)

Вячеслав Любовин, ваш сайт на windows-1251 кодировке когда был создан на какой версии машины? (важно, потому что были доработки, не факт что у вас они есть, потому уточняю).

Цитата
Андрей Николаев написал:
Для Bitrix Env смотри там: Код/etc/php.d/bitrixenv.ini

Вообще менять тут как минимум неверно) Это общие параметры всей машины. По умолчанию там должно быть:

Переопределять их нужно или в конфигурации httpd этого сайта или в .htaccess файле.
Так же зависит от типа вашей машины: стабильная 7.4.3 или бета 7.4.11. В последней бете правили создание сайтов в кодировке windows-1251.

В версии 7.4.3 можно посмотреть в конфиг файл httpd для сайта по пути /etc/httpd/bx/conf/bx_ext_ .conf (сайт не дефолт, для дефолта аналогично), там увидите:

latin — тут ошибка, она исправлена в 7.4.11. Если посмотреть в 7.4.11 тот же конфиг /etc/httpd/bx/conf/bx_ext_ .conf

то видим cp1251 — верное значение.

Если посмотрите конфиг файлы httpd для UTF-8 сайтов, то там этих строк не будет. Эти опции будут браться из файла /etc/php.d/bitrixenv.ini.

Кроме того чтобы система обновлений проекта работала после обновления для проекта в кодировке windows-1251 нужно для этого проекта в файле /bitrix/php_interface/dbconn.php добавить строку:

Это подправим в следующей бете 7.4.12.

Вячеслав Любовин, то есть вам надо вернуть php.ini к дефолтному состоянию, проверить httpd конфиг сайта, внести правки если нужно и добавить строку в dbconn.php. А параметр mbstring.internal_encoding скорей всего у вас в .htaccess, его закоментировать в этом файле.

Цитата
Александр Панишев написал:
интересно а как быть в ситуации когда на серваке есть сайты и utf 8 и 1251

кодировки default_charset для всех один ведь и получается сайты надо переводить с 1251 на utf-8

Алексей Шафранский, Устанавливал на свежую 7.4.3

После загрузки машины, был удален дефолтный сайт, и создан на windows 1251, потом бэкап был перенес с хостинга

Далее всеми правдами и не правдами пытался избавиться от ошибок которые возникали при проверке битрикса

Читайте также:  Очистка папки windows old
Оцените статью