Кракозябры в ajax везде

12
Ragnarok
На сайте с 25.06.2010
Offline
226
3758

Проблема: практически везде, где что-то подгружается через javascript, текст вставляется (и выводится) кракозябрами.

На сайте кодировка utf-8.

Как пример, вставляется fckeditor через <script.. -- кнопки и всё кракозябрами. Открываю, пересохраняю в win-1251 - и вуаля, нормально!

Читал, что по умолчанию браузеры выводят в cp1251, а если подгружаемый файл в utf-8, будут кракозябры..но как это исправить, непонятно. Файлов довольно много, все кодировать в win-1251? добавлять в начало каждого <? hheader('Content-type: text/html; charset=utf-8'); ?> - можно, но как быть с .js файлами? да и много их всех разных непойми где.

Да и не думаю, что разработчики не исправили бы такую явную ошибку, значит что-то у меня не то с настройками сервера?

сначала эту проблему заметил на установленном Drupal 7, некоторые ajax-выводимые комментарии выводились кракозябрами. думал, может не так поставилось что.

потом установил instantcms -- та же беда.

Centos, в апаче стоит adddefaultcharset utf-8

что посоветуете?

---------- Добавлено 02.11.2012 в 03:29 ----------

Ragnarok:

Как пример, вставляется fckeditor через <script.. -- кнопки и всё кракозябрами.

выглядит это дело, как будто он в кодировке utf-8, а я указал принудительно cp1251

---------- Добавлено 02.11.2012 в 03:34 ----------

также пробовал добавлять в .htaccess

<IfModule mod_charset.c>
CharsetDisable On
</IfModule>

или

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
CharsetSourceEnc utf-8
CharsetDefault utf-8
</IfModule>
//TODO: перестать откладывать на потом
edogs software
На сайте с 15.12.2005
Offline
775
#1

А что на самом деле у Вас отдается браузеру сервером в Content-Type ? Посмотрите файрбагом или еще чем-нибудь типа того.

Если для javascript файлов там 1251, то пинать админов сервера, учитывая то как Вы описали ситуацию, при таком раскладе, надо смотреть вживую.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
siv1987
На сайте с 02.04.2009
Offline
427
#2

Если сайт работает в utf-8, естественно скрипты (содержащие текст для вывода) тоже должны быть закодированы в этой кодировке.

Читал, что по умолчанию браузеры выводят в cp1251, а если подгружаемый файл в utf-8, будут кракозябры..

Браузер подключает файлы в той кодировке в которой они есть. Если на сайте utf-8, а в подключаемом файле windows-1251 тогда будут крокозябры.

Ragnarok:
добавлять в начало каждого <? hheader('Content-type: text/html; charset=utf-8'); ?>

Зачем? Одной строчкой в htaccess пропишите кодировку для заголовков.

Ragnarok:
некоторые ajax-выводимые комментарии выводились кракозябрами.

Значит где-то идет расхождение в кодировках. Ajax имеет работать и с cp1251 и с utf-8.

IL
На сайте с 20.04.2007
Offline
435
#3
Ragnarok:
Как пример, вставляется fckeditor через <script..

У script допустимо указывать атрибут charset (например, charset="UTF-8")

Ragnarok:
adddefaultcharset utf-8

Если записано в "правильном" регистре - проверить, отрабатывает ли? (загрузить "просто" HTML-ку и посмотреть заголовки сервера)

Возможно, AllowOverride не даёт (видимо, VPS?) или другой .htaccess перебивает.

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Ragnarok
На сайте с 25.06.2010
Offline
226
#4

я склоняюсь к мысли что что-то не то с настройками сервера вообще и апача в частости, ибо 2 разных движка выдают одинаковые по сути ошибки с кодировкой

---------- Добавлено 02.11.2012 в 11:44 ----------

поставил в настройках апача для всех AddDefaultCharset utf-8

пара сайтов, которые были на win-1251, сразу стали в кракозябрах

для каждого через ISPManager исправил AddDefaultCharset cp-1251 -- стали правильно, значит, указание кодировки работает.

а у этих.. непонятно что

---------- Добавлено 02.11.2012 в 12:32 ----------

edogs:
А что на самом деле у Вас отдается браузеру сервером в Content-Type ? Посмотрите файрбагом или еще чем-нибудь типа того.
Если для javascript файлов там 1251, то пинать админов сервера, учитывая то как Вы описали ситуацию, при таком раскладе, надо смотреть вживую.

проверил 1 из js файлов, Вы правы, Content-Type application/x-javascript; charset=windows-1251

в настройках апача для домена указана дефолтная utf-8, я даже в директорию с js закинул .htaccess с AddDefaultCharset utf-8, скрипт пересохранил в utf-8. а заголовок отдаётся charset=windows-1251, почему так?

C
На сайте с 04.02.2005
Offline
277
#5

попробуйте вызвать из адресной строки тот запрос, который вы отправляет обработчику ajax

Ragnarok
На сайте с 25.06.2010
Offline
226
#6
Chukcha:
попробуйте вызвать из адресной строки тот запрос, который вы отправляет обработчику ajax

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

T
На сайте с 11.08.2005
Offline
181
#7

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

header("Content-Type: text/html; charset=UTF-8",true);

IL
На сайте с 20.04.2007
Offline
435
#8
Ragnarok:
в настройках апача для домена указана дефолтная utf-8, я даже в директорию с js закинул .htaccess с AddDefaultCharset utf-8, скрипт пересохранил в utf-8. а заголовок отдаётся charset=windows-1251, почему так?

nginx? десять nginx-ов

C
На сайте с 04.02.2005
Offline
277
#9

обработчик аякса работает с базой?

коннект к базе с правильной кодировкой?

я эту часть движков не трогал.. могу открыть .js и посмотреть заголовки. судя по всему, в этом всё дело.

А никто и не говорит - трогать

Вы отправляете аякс запрос в каком-то виде... возьмите подставьте это запрос в адресную строку.

Сервер должен что-то ответить, но может и не ответить, если post.

Ragnarok
На сайте с 25.06.2010
Offline
226
#10
Chukcha:
обработчик аякса работает с базой?
коннект к базе с правильной кодировкой?

А никто и не говорит - трогать

Вы отправляете аякс запрос в каком-то виде... возьмите подставьте это запрос в адресную строку.
Сервер должен что-то ответить, но может и не ответить, если post.

я не знаю как движок их отправляет.. там где есть такое, скрипт запакован eval(function(p,a,c,k,e,r), там где вставляется fckeditor (ифреймом) при переходе по ссылке ифрейма - белый экран

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

ivan-lev:
nginx? десять nginx-ов

в nginx.conf стояло

charset win-1251;

исправил на

charset utf-8;

ребутнул. js отдаются так же в 1251 =(

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий