Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Проблема с кодировкой (https://javascript.ru/forum/jquery/45107-problema-s-kodirovkojj.html)

tilperion 14.02.2014 20:31

Проблема с кодировкой
 
Добрый вечер. Собственно проблема :)
С помощью $.ajax посылаю запрос на сервер и получаю данные в кодировке CP-866, но потом когда хочу их вставить в страницу, то они выводятся кракозяблами, кодировка файла, куда хочу данные вставить - ANSI.

Кто-то может подсказать в чем проблема, может при передаче данных через AJAX кодировка меняется ?

danik.js 14.02.2014 21:58

   UTF-8 юзай!
         @
проблем не знай!

:D

tilperion 14.02.2014 22:01

Цитата:

Сообщение от danik.js (Сообщение 297748)
   UTF-8 юзай!
         @
проблем не знай!

:D

Если бы была только возможность:) А так ....

danik.js 14.02.2014 22:04

Сервер правильную кодировку сообщает (в ответ на аякс-запрос) в заголовке Content-Type?

Кодировка самой страницы роли не играет. В JS один хер все строки в UTF8.

tilperion 14.02.2014 22:44

Цитата:

Сообщение от danik.js (Сообщение 297751)
Сервер правильную кодировку сообщает (в ответ на аякс-запрос) в заголовке Content-Type?

Кодировка самой страницы роли не играет. В JS один хер все строки в UTF8.

Сервер верную код кодировку сообщает.
Я правильно понял, что ответ на ajax запрос, в js файлe уже будет в UTF-8 кодировке ?
Если ли какие -то методы преобразование кодировок в javascript на подобии php iconv или mb_convert_encoding ?:blink:

Deff 14.02.2014 22:50

tilperion,
Ссылку на ресурс дайте глянуть
========================


http://qps.ru/h4fSr А без извратов нужно:

Для GET запросов

Цитата:

Всё, что надо сделать, чтобы теперь работать
в PHP в
нормальной кодировке использовать iconv:

$f = iconv('UTF-8', 'windows-1251', $_GET['f']);
Для Post запросов
Цитата:

А для того, чтобы сервер отдавал яваскрипту в правильной кодировке (т.е. в такой же кодировке, в которой отдаются все xhtml страницы) просто в начале вашего ajax.php пропишите заголовок:

header('Content-type: text/html; charset=windows-1251');

И всё будет ок.

Дзен-трансгуманист 14.02.2014 23:07

Цитата:

Сообщение от tilperion
Если ли какие -то методы преобразование кодировок в javascript на подобии php iconv или mb_convert_encoding ?

Прежде чем шаманить на клиенте, нужно получить бинарное представление данных.
Sending and Receiving Binary Data
А потом хоть рары распаковуйте. ;)

danik.js 15.02.2014 08:17

Короче, поэкспериментировал. Значит кодировка записывается как charset=cp866.
Во-первых, хром нивкакую эту кодировку не хочет отображать корректно. То есть выбор такой стремной кодировки - это уже фэйл.
Во-вторых, если сервер не выставил правильно кодировку - то это еще добавляет проблем.
Сервер должен отдать такой заголовок:
Content-Type: text/plain;charset=cp866
Вместо text/plain может быть любой другой тип.
Если сервер не отдает кодировку, или отдает неверно - то остается использовать request.overrideMimeType(тут_правильны й_content_type), но такой функции нет в IE.

Короче гемор обеспечен. То есть если нужен хром и IE, то тут только вариант, озвученный Дзен-трансгуманист'ом. Ну или найти админа сервера и настучать ему по голове.


Часовой пояс GMT +3, время: 18:51.