The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с кодировками "
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (PHP)
Изначальное сообщение [ Отслеживать ]

"Проблема с кодировками "  +/
Сообщение от KomaLex (ok) on 24-Май-11, 18:43 
Собственно начнем с того, что в chrome работает все нормально, а в ie выдает следующее:

Warning: htmlentities() [function.htmlentities]: charset `US-ASCII' not supported, assuming iso-8859-1 in /usr/local/www/ks/auth.php on line 43

совершенно не понятно откуда берется US-ASCII.
Кодировка самого файла


# file -i auth.php
auth.php: text/x-php; charset=iso-8859-1

Сайт сам выдается в кодировке Windows-1251

# cat .htaccess
AddDefaultCharset Windows-1251

Собственно ругается вот на эти функции:
function mysql_entities_fix_string($string){
    list ( $charset, $down ) = explode ( "," , $_SERVER['HTTP_ACCEPT_CHARSET'] );
    return  htmlentities(mysql_fix_string($string),ENT_QUOTES,$charset);
}
function mysql_fix_string($string){
    if(get_magic_quotes_gpc()) $string = stripcslashes($string);
    return mysql_real_escape_string($string);
}
В них вводятся данные с обычных полей input и передаются в php через форму.
Не понятно откуда в переменной $_SERVER['HTTP_ACCEPT_CHARSET'] появилась кодировка US-ASCII. Подскажите куда можно копнуть. Где посмотреть и прочее.
Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема с кодировками "  +/
Сообщение от Aquarius (ok) on 24-Май-11, 19:17 
> Собственно начнем с того, что в chrome работает все нормально, а в

Собственно начнем с того, что назовем сервер

>[оверквотинг удален]
>     return  htmlentities(mysql_fix_string($string),ENT_QUOTES,$charset);
> }
> function mysql_fix_string($string){
>     if(get_magic_quotes_gpc()) $string = stripcslashes($string);
>     return mysql_real_escape_string($string);
> }
> В них вводятся данные с обычных полей input и передаются в php
> через форму.
> Не понятно откуда в переменной $_SERVER['HTTP_ACCEPT_CHARSET'] появилась кодировка US-ASCII.
> Подскажите куда можно копнуть. Где посмотреть и прочее.

если это апач, то, очевидно, в его конфиге

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с кодировками "  +/
Сообщение от KomaLex email(ok) on 25-Май-11, 05:12 
Нет, в конфиге вроде все нормально стоит

AddDefaultCharset windows-1251

вот полный конфиг


ServerRoot "/usr/local"
Listen 80
LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so
LoadModule authn_default_module libexec/apache22/mod_authn_default.so
LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so
LoadModule authz_host_module libexec/apache22/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache22/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache22/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so
LoadModule authz_default_module libexec/apache22/mod_authz_default.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so
LoadModule file_cache_module libexec/apache22/mod_file_cache.so
LoadModule cache_module libexec/apache22/mod_cache.so
LoadModule disk_cache_module libexec/apache22/mod_disk_cache.so
LoadModule dumpio_module libexec/apache22/mod_dumpio.so
LoadModule include_module libexec/apache22/mod_include.so
LoadModule filter_module libexec/apache22/mod_filter.so
LoadModule charset_lite_module libexec/apache22/mod_charset_lite.so
LoadModule deflate_module libexec/apache22/mod_deflate.so
LoadModule log_config_module libexec/apache22/mod_log_config.so
LoadModule logio_module libexec/apache22/mod_logio.so
LoadModule env_module libexec/apache22/mod_env.so
LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so
LoadModule expires_module libexec/apache22/mod_expires.so
LoadModule headers_module libexec/apache22/mod_headers.so
LoadModule usertrack_module libexec/apache22/mod_usertrack.so
LoadModule unique_id_module libexec/apache22/mod_unique_id.so
LoadModule setenvif_module libexec/apache22/mod_setenvif.so
LoadModule version_module libexec/apache22/mod_version.so
LoadModule ssl_module libexec/apache22/mod_ssl.so
LoadModule mime_module libexec/apache22/mod_mime.so
LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule status_module libexec/apache22/mod_status.so
LoadModule autoindex_module libexec/apache22/mod_autoindex.so
LoadModule asis_module libexec/apache22/mod_asis.so
LoadModule info_module libexec/apache22/mod_info.so
LoadModule cgi_module libexec/apache22/mod_cgi.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
LoadModule vhost_alias_module libexec/apache22/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache22/mod_negotiation.so
LoadModule dir_module libexec/apache22/mod_dir.so
LoadModule imagemap_module libexec/apache22/mod_imagemap.so
LoadModule actions_module libexec/apache22/mod_actions.so
LoadModule speling_module libexec/apache22/mod_speling.so
LoadModule userdir_module libexec/apache22/mod_userdir.so
LoadModule alias_module libexec/apache22/mod_alias.so
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
LoadModule php5_module        libexec/apache22/libphp5.so
LoadModule ldap_module  libexec/apache22/mod_ldap.so
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User www
Group www
</IfModule>
</IfModule>
ServerAdmin komal@mydomen.ru
DocumentRoot "/usr/local/www/apache22/data"
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
ErrorLog "/var/log/httpd-error.log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "/var/log/httpd-access.log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/usr/local/www/apache22/cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
DefaultType text/plain
<IfModule mime_module>
    TypesConfig etc/apache22/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

AddDefaultCharset windows-1251

ServerName mail.mydomain.ru:443
NameVirtualHost 192.168.1.1:80

Include etc/apache22/extra/httpd-ssl.conf
<VirtualHost ks.proc.local:80>
        ServerName ks.proc.local:80
        DocumentRoot /usr/local/www/ks/
        <Directory /usr/local/www/ks>
          Options Indexes
          Order allow,deny
          AllowOverride All
          Allow from all
        </Directory>
</VirtualHost>
Include etc/apache22/Includes/*.conf

Да и собственно приводил же .htaccess
там установлена кодировка windows-1251

Отображается то все нормально, как и должно отображаться. Судя по всему проблема в том, что форма передает в пхп скрипт в какой то неправильной кодировке данные из тегов input.
Есть еще ньюанс может с этим что то:
Сама страничка запускается через пхп, и уже из пхп запускается smarty шаблон бля отображения формы. который после сабмита посылает данные снова в пхп.
Пробовал перед вызовом шаблона устанавливать


header('Content-Type: text/html; charset=Windows-1251');

Результат тот же

Вот текст шаблона


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="ru">

<head>

    <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
    <meta name="author" content="komal" />

    <title>Авторизация пользователя</title>
    <link rel="stylesheet" type="text/css" href="css/ikctravel.css">
</head>

<body>

<div class="auth">
    <form method="POST" action="auth.php" enctype="multipart/form-data">
        <table class="auth">
            <tr><td class="auth"><input name="username" type="text" /></td></tr>
            <tr><td class="auth"><input name="password" type="password" /></td></tr>
            <tr><td class="auth"><input type="submit" value="Войти" />
                <input type="reset" value="Отмена" /></td></tr>
        </table>
    </form>
</div>

</body>
</html>

Но проблема не только с этим шаблоном, а со всеми формами. Отображается все нормально, а в скрипт передается в какой то неправильной кодировке.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема с кодировками "  +/
Сообщение от PavelR (??) on 26-Май-11, 13:09 
> В них вводятся данные с обычных полей input и передаются в php
> через форму.
> Не понятно откуда в переменной $_SERVER['HTTP_ACCEPT_CHARSET'] появилась кодировка US-ASCII.
> Подскажите куда можно копнуть. Где посмотреть и прочее.

ИМХО, так, навскидку - надо смотреть ман на функцию, скорее всего ничего подходящего-ожидаемого скриптом не пришло, или тупо значение не поддерживается, вот оно на дефолтное скинулось.

Легче всего - продебажить - вывести значения пришедшие в этих массивах, ну в частном случае сдампить $_SERVER[] и посмотреть. Потом можно tcpdump запустить на сетевой трафик и посмотреть реально прилетающие заголовки запроса.

Ковырять апач тут ИМХО бесполезно, все дело в неподходящем радиусе кривизны написанного кода.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Проблема с кодировками "  +/
Сообщение от universite email(ok) on 02-Июн-11, 04:08 

> # file -i auth.php
> auth.php: text/x-php; charset=iso-8859-1
>
> Подскажите куда можно копнуть. Где посмотреть и прочее.

ковырять в php.ini, модуль мбстринг


    mbstring.internal_encoding = UTF-8 ; Set default internal encoding to UTF-8

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру