Косяк с кодировкой

Старый mweb

Модератор: [mweb team]

Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 10:52

отправляю при помощи вот такого скрипта даннные на БД :

Код: Выделить всё
function getxmlhttp(){
var xmlhttp = false;
try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
catch(e){
try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
catch(E){xmlhttp = false;}
}
if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){xmlhttp = new XMLHttpRequest();}
return xmlhttp;
}

function processajax(objID, serverPage){
xmlhttp = getxmlhttp ();
xmlhttp.open("GET", serverPage);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById(objID).innerHTML = xmlhttp.responseText;
}
}
xmlhttp.send(null);
}


в числе прочего через этот ГЕТ передается ник юзера который написан по-русски. в БД он вносиццо мерзкими краказяблами. при передаче данных джаваскриптом пхп-скрипту вносящем инфу в БД вот такой ф-цией

Код: Выделить всё
function user_add(){
var shit = new Date();
var month = document.forms["add_user"].elements["month"].value;
var username = document.forms["add_user"].elements["username"].value;
var day = document.forms["add_user"].elements["day"].value;
var gender = document.forms["add_user"].elements["gender"].value;
processajax("output", "dbfunc.php?mode=add_user&month="+month+"=&username="+encodeURI(username)+"&day="+day+"&gender="+gender+"&shit="+shit);
setTimeout("hide_addform()", 250);
}


я пробовал escape(), encodeURI(), encodeURIComponent() куда помещал значение поля формы с этим русским ником а в принимающем пхп-скрипте urldecode() и rawurldecode() - все это в разных комбинациях - но в результате адинхрен получал в БД краказяблы только разных конфессий -19- нихрена не понимаю в этих мутных делах с кодировками -12- помогите кто в курсе а то звереть уже начинаю

ф-ция в пхп-скрипте которая вносит в БД данные выглядит вот так

Код: Выделить всё
function add_user(){
if(!empty($_GET['month']) && !empty($_GET['username']) && !empty($_GET['day']) && !empty($_GET['gender'])){
include("dbcon.php");
$sql = "INSERT INTO $table (month, username, day, gender) VALUES ('".$_GET['month']."', '" . urldecode($_GET['username']) . "', '".$_GET['day']."', '".$_GET['gender']."')";
if($result = mysql_query($sql)){build_list();}
else{echo 'данные не внесены!';}
mysql_close($link);
}
else{echo 'не все поля формы заполнены!';}
}
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Jedi Пт авг 21, 2009 10:59

Домой вечером приду. попробую ответить. у меня книжка по аяксу лежит.
Аватара пользователя
Jedi
Хронический Астматик
 
Сообщения: 1852
Зарегистрирован: Вс сен 08, 2002 0:01
Откуда: Russia

Re: Косяк с кодировкой

Сообщение Muerto Пт авг 21, 2009 11:52

По идее эскейп должен был помочь.
В какой у тебя кодировке страница с формой и какая кодировка базы?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 12:27

страница в windows-1251 и БД в cp1251
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 12:29

вот посылаю "Муерта" а в БД вписывается "%u041C%u0443%u0435%u0440%"
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Jedi Пт авг 21, 2009 13:35

ага. ну это точно что-то с escape связано а не с кодировкой.
Аватара пользователя
Jedi
Хронический Астматик
 
Сообщения: 1852
Зарегистрирован: Вс сен 08, 2002 0:01
Откуда: Russia

Re: Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 13:55

так что с эскейпом-то этим бляцким надо сделать?
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Muerto Пт авг 21, 2009 15:16

А на post перейти - никак? Т. е. не потребуется и перекодирования. А так - у тебя в закодированом UTF в базе сохраняется.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 15:52

Muerto писал(а):А на post перейти - никак? Т. е. не потребуется и перекодирования. А так - у тебя в закодированом UTF в базе сохраняется.


а ты мыло проверь которое мне в ЛС недавно давал. я туда выслал всю эту муть вместе с дампом. может поправишь там чо надо а потом я запомню как надо по-человечески писать такие штуки и не буду тупить больше :-) ну если время есть конечно
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Muerto Пт авг 21, 2009 17:34

А ты локально это всё делаешь?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Косяк с кодировкой

Сообщение Padonak Пт авг 21, 2009 20:01

Muerto писал(а):А ты локально это всё делаешь?


ну да на Денвере
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Padonak Сб авг 22, 2009 10:14

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

не вдаваясь в словоблудие приведу способ решения данной проблемы. как оказалось я был на полпути к решению когда пробовал использовать при отправке encodeURIComponent() но на стороне сервера применял не ту функцию которую следует. в принимающем скрипте надо применить функцию iconv("UTF-8", "WINDOWS-1251", $param); и будет вам щастье :-)

вот линк на короткое и крайне полезное пояснение из которого я все это и почерпнул http://www.easywebscripts.net/ajax/ajax_rus.php
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Padonak Сб авг 22, 2009 10:39

в продолжение темы назрел еще один вопрос но уже чисто пэхапэшный. у меня таблица юзеров с полями:

user_id
month
username
day
gender


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

Код: Выделить всё
function build_list(){
if(empty($_GET['sortby'])){$sortby = "month";}
else{$sortby = $_GET['sortby'];}

echo 'ТУТ НАЧАЛО ПОСТРОЕНИЯ ТАБЛИЦЫ';

include("dbcon.php");
$sql = "SELECT * FROM $table ORDER BY $sortby";
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)){
echo 'ТУТ ВЫВОД СТРОК ТАБЛИЦЫ ТАБЛИЦЫ';
}

mysql_close($link);
echo '
</tbody>
</table>';
}


передаю через ГЕТ имя поля по которому хочу получить сортировку ($_GET['sortby']). все работает отлично локально на Денвере но с сервера сортировка по username приходит в виде "абы как". что за херь не знаю но короче говоря нифига не сортирует по юзернейму гадина.

что делать?
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Muerto Сб авг 22, 2009 11:55

$sql = "SELECT * FROM $table ORDER BY binary($sortby)";
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Косяк с кодировкой

Сообщение Padonak Сб авг 22, 2009 12:19

сработало! Муерте риспект и увага :-)
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Muerto Сб авг 22, 2009 13:54

Ещё такой момент можно добавить: $sql = "SELECT * FROM $table ORDER BY binary(LOWER($sortby))"; ежели сработает, конечно. А то там косяки с заглавными и прописными.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Косяк с кодировкой

Сообщение Padonak Сб авг 22, 2009 14:24

Muerto писал(а):Ещё такой момент можно добавить: $sql = "SELECT * FROM $table ORDER BY binary(LOWER($sortby))"; ежели сработает, конечно. А то там косяки с заглавными и прописными.



дада. хотел про это спросить но подумал что и так уже моск вам поклевал достаточно. спасибо! Муерта ты все мои мысли читаешь или тока про код? -02-
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Padonak Сб авг 22, 2009 14:28

есть нормальный справочник по MySQL в формате *.chm (как по пхп)? штобэ там поиск был и с примерами. а то у меня все в каких-то пэдээфах неудобных и других форматах. а то там ведь столько возможностей у этих запросов а я нихрена толком не знаю синтаксис. вот например про эти бинари и ловер впервые вобще слышу т.к. в книжке моей по пхп такого и в помине не было
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Косяк с кодировкой

Сообщение Jedi Сб авг 22, 2009 18:56

mysql.ru конечно так себе документация. но тем не менее полезная
Аватара пользователя
Jedi
Хронический Астматик
 
Сообщения: 1852
Зарегистрирован: Вс сен 08, 2002 0:01
Откуда: Russia


Вернуться в Архив

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

cron