кодировка и Ajax

Статус
Закрыто для дальнейших ответов.

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
сабж:

при отправлении русского текста посредством AJAX'а в базу летит текст на UTF8. Сайт использует ср1251 кодировку. соответственно прилитает в морду кракозябле... перекодирование текста в теле SQL-запроса посредством тогоже CONVERT(field using cp1251) ровным счетом ни к чему не приводит...

пути решения:

1. неверный подход к перекодированию в запросе?
2. перекодировать с помощью JS при приеме?
3. чтото добавить в тело скрипта? (на с++ двиг :) )

очень необходима ваша помощь.
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Каким образом аякс отправляет данные? Генерирует виртуальный тег <form> на странице и делает submit? Если да, то присобачь тегу <form> атрибут accept-charset="windows-1251"
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
в форме поставил кодировку. на странице кодировка тож стоит. в скрипте при передаче данных тоже в заголовке есть кодировка... ниче не помогло.

напишу пожалуй по-подробнее:

есть xhtml-совместимый шаблон. в нем есть форма ввода (допустим комментария). эта форма сабмитится на javascript-функцию. в ней формируется запрос к обработчику на сервере. приходят и уходят данные в utf-8 ... а жизненно важно чтобы в ср1251.

вобщем такая постанова - мучаю покачто iconv на серверной стороне. есть большие нюансы в отличие от пыхыпы..
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Попробуй использовать base64-кодирование перед отправкой на стороне клиентской.
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
новости с фронта:

1. от клиента данные теперь переводятся из utf8 в cp1251 (ajax -> engine)

2. но ешевометь етот аякс!! теперь данные на пути engine->ajax каверкаются..... и приходят коракуле!

полпути пройдено. при простых запросах к движку данные в базе хранятся в ср1251 и проблем нет. но когда взаимодействие идет посредством аякса - все ниче хорошего.

2ДеМон. если ты один кто тут чтото понимает по теме, то почему бы в асикюююю не продолжить? мну уже начинают рвать вклочья. ета технология для меня новая и в ней я всего две недели гдето... так что все на повышенных скоростях надо
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
в общем в базе то все в 1251 теперь, как заставить аякс выдавать на страницу текст в читабельном виде в 1251 ????????????
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Так. А ты при отправке данных к аяксу (если через PHP) посылай Content-Type: text/javascript; charset=windows-1251.

Что до аськи: дома у меня монитор уже месяц как не работает. А на работе (где я сейчас и сижу) аська запрещена на уровне процессов. Хороший у нас админ, умный.
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
1. у меня не пхп, о чем я неоднократно писал
2. кодировку ставлю . эффект = 0
3. с админом договариваются обычно на уровне пивапития :)

прихожу к выводу что собака зарылась на уровне движка... который насильно перекодировывает (уфф...) все в ср1251 .....
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
3. эта сволочь вообще спиртное не пьёт.
 

POLTER

Active Member
Регистрация
03.09.2006
Сообщения
29
Здравствуйте!!! =)
У меня аналогичная проблема...
С помощью Аякс-а я получаю данные с сервера, которые динамически сгенерированы скриптом.
И проблема в том, что возвращает данные он в Юникоде, а нужно в windows-1251....
Принцип получения данных прост - создание XmlHTTPRequest, открытие файла, передача параметров, на сервере генирируются данные, которые потом передаются клиенту через responseText. Очень нужно, чтобы данные были именно в 1251! В чем проблема? :unsure: Заранее спасибо!
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
проблема решается переводом сайта на юникод. либо escape/unescape данных.
 

POLTER

Active Member
Регистрация
03.09.2006
Сообщения
29
проблема решается переводом сайта на юникод.
Прописал кодировку Unicode в <meta>, теперь весь текст на сайте стал квадратиками отображаться...
либо escape/unescape данных.
а что это такое? Поподробнее расскажите, если не трудно
 

deMone

Злой страшный дядька
Регистрация
30.01.2006
Сообщения
937
Нужно не только в <meta> кодировку исправить, но и все тексты переписать в unicode.
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
Что-то я эту тему пропустил
Вот мое решение на js - пашет, сбоев не дает вроде...
Код:
function encoderus(EntryTXT) { 
  var text = "";	
  var Ucode; 
  var ExitValue;
  var s;
  
  for (var i=0; i<EntryTXT.length; i++) { 
  
	s= EntryTXT.charAt(i);
	Ucode = s.charCodeAt(0); 
	var Acode = Ucode; 
	if (Ucode > 1039 && Ucode < 1104){ 
	  Acode -= 848;
	  ExitValue = "%" + Acode.toString(16);		  
	}
	else   
	if (Ucode == 1025) {
	  Acode = 168; 
	  ExitValue = "%" + Acode.toString(16);		  
	}
	else  
	if (Ucode == 1105){
	  Acode = 184;
	  ExitValue = "%" + Acode.toString(16);		  
	} 
	else
	if (Ucode == 32){
	  Acode = 32;
	  ExitValue = "%" + Acode.toString(16);		  
	} 
	else if(Ucode == 10){
		Acode=10;
		ExitValue = "%0A";
	}else
	 ExitValue=s;		  
	 
   text = text + ExitValue; 

  }	  
	return text; 
}
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
оптимальным же выходом является переход на UTF-8.

(un)escape эта такая ф-я в жс которая перекодировает как надо :)
 

DnAp

self::setDebugMode(true);
Регистрация
30.04.2005
Сообщения
490
v0rbis, Это самый прааильный вариант, но сайт переводить на UTF-8 иногда бывает проблемотично...
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
решается на уровне администрации хостинга :)
 

POLTER

Active Member
Регистрация
03.09.2006
Сообщения
29
Ясно, Спасибо огромное! =) А переписать текст на Юникод, это вы имеете в ввиду вместо русских букв писать коды? типа
вместо ВАСЯ
писать что-то типа &#1042&#1040&#1057&#1071?
 

v0rbis

selfcoded
Регистрация
02.05.2005
Сообщения
923
если работаете в DreamWeaver то задать для проекта новую кодировку и работать уже в ней. возмжно будут проблемы. у нас переход на юникод пока отложен ибо дел и так много :)

для БД думаю придется пересоздать базу со всеми таблицами под новый чарсет. ибо alter table/base чтото не дал результатов :(
 
Статус
Закрыто для дальнейших ответов.
Верх Низ