1. в utf-8 латинский алфавит и всякие символы лежат в 1 байте.
2. русский алфавит кодируется 2-мя байтами, причем первый 208 или 209. в символах 208 и 209 дают символы PI, но для написаных рукой эти кода 80 и 73, значит это не символы латинского алфавита.
3. итог: если есть во входящих данных 208 или 209 - значит это utf, иначе win-1251.
другие кодировки мне не нужны в принципе для данной задачи.
в чем я не прав?
корни задачи такие: сайт в win-1251. некоторые данные отправляются через jQuery, т.е. идут в utf. мне нужно понимать: либо было отправлено стандартным action например или ссылка содержала код именно "прописаный в html", либо это данные через jQuery. если кто знает как заставить jQuery отправлять в win-1251 - то проблемы вобще не будет.
спасибо.
Спустя 12 минут, 56 секунд (9.09.2011 - 20:12) YVSIK написал(а):
ПОКА ПОСЛЕЖУ что те ответят но ))
а про себя подумал ТАК))причем тут кодировка и вообще для чего?
кодировка нужна для вывода на страницу, ещё вернее сказать
если файл в одной кодировке то как он передаст какую-то часть в другой,?? собстно?
по моему так не бывает
если на сайте есть ожна кодировка то как при помощи чего-то он может
передавать по другому, да и ваще как
а про себя подумал ТАК))причем тут кодировка и вообще для чего?
кодировка нужна для вывода на страницу, ещё вернее сказать
если файл в одной кодировке то как он передаст какую-то часть в другой,?? собстно?
по моему так не бывает
если на сайте есть ожна кодировка то как при помощи чего-то он может
передавать по другому, да и ваще как
Цитата |
некоторые данные отправляются через jQueуr |
как ты себе это представляешь?
ведь jQuerу это просто свод правил и всего, так и зовется БИБЛИОТЕКА
Спустя 2 минуты, 5 секунд (9.09.2011 - 20:14) Winston написал(а):
Насчет определения кодировок попробуй mb_detect_encoding()
Спустя 7 минут, 40 секунд (9.09.2011 - 20:22) redreem написал(а):
YVSIK, да все ajax методы в jQuery отправляют данные в utf. хоть весь сайт у меня на win-1251.
Winston, исходя из этого, использование mb_detect_encoding() превращается в те еще танцы с бубнами.
Winston, исходя из этого, использование mb_detect_encoding() превращается в те еще танцы с бубнами.
Спустя 47 минут, 45 секунд (9.09.2011 - 21:10) KonstantinK написал(а):
Цитата |
да все ajax методы в jQuery отправляют данные в utf. хоть весь сайт у меня на win-1251 |
Ну так из этого и исходите если данные получены к примеру из формы то они прийдут в win-1251 а если через ajax по соответственно в utf-8 . А так точно определить в какой кодировке данные средствами PHP трудно вот http://habrahabr.ru/blogs/php/107945/ была статья
Спустя 8 минут, 9 секунд (9.09.2011 - 21:18) redreem написал(а):
KonstantinK, сейчас так и поступаю. вопрос собственно в правоте моих рассуждений в топе. а копаю на будущее. вдруг возникнет ситуация, когда я не буду знать наверняка чем отправлено.
Спустя 15 минут, 15 секунд (9.09.2011 - 21:33) YVSIK написал(а):
redreem про это ничего не знаю , но кодировка определяется
ешё раз для вывода удобочитаемом виде на странице
вот передается она в своем коде кажется это ANSI и вот jQuery
по момйу все разно какая; он что; отправляет данные серверу?
или ещё чемунить?? он выполняет команды и выдает их браузеру, и никак
не иначе ))
а кодировку определяет сам браузер) и если они не соответсвую одному значению выходят КРАКОЗЯБРЫ )) как это говориться ))
вот так примерно ),, это что терь jQuery не может работать с винвской кодироквой вот примерный мой обсурд понимания
вот и уточняю на вскиЙ)))..........
ешё раз для вывода удобочитаемом виде на странице
вот передается она в своем коде кажется это ANSI и вот jQuery
по момйу все разно какая; он что; отправляет данные серверу?
или ещё чемунить?? он выполняет команды и выдает их браузеру, и никак
не иначе ))
а кодировку определяет сам браузер) и если они не соответсвую одному значению выходят КРАКОЗЯБРЫ )) как это говориться ))
вот так примерно ),, это что терь jQuery не может работать с винвской кодироквой вот примерный мой обсурд понимания
вот и уточняю на вскиЙ)))..........
Спустя 6 минут, 58 секунд (9.09.2011 - 21:40) redreem написал(а):
YVSIK, я так понимаю просто jQuery принудительно кодирует в utf вот и все.
Спустя 1 час, 12 минут, 54 секунды (9.09.2011 - 22:53) Zerstoren написал(а):
Посоветовал бы chardet - но он под Пайтоном.
А так используйте рекомендацию Winston mb_detect_encoding()
А так используйте рекомендацию Winston mb_detect_encoding()
Спустя 2 минуты, 12 секунд (9.09.2011 - 22:55) redreem написал(а):
блин, а вы мне скажите в чем МОИ рассуждения ошибочны??? какую языковую конструкцию я профукаю если буду проверять только 208 и 209???
Спустя 21 минута, 5 секунд (9.09.2011 - 23:16) Zerstoren написал(а):
Цитата (redreem @ 9.09.2011 - 19:55) |
блин, а вы мне скажите в чем МОИ рассуждения ошибочны??? какую языковую конструкцию я профукаю если буду проверять только 208 и 209??? |
пытаться надеяться что в сообщении есть 208 и 209 байт - наивно.
Ну отправлю я вам 2 символа, а не более 65. Все нету этих байтов.
Не морочьте себе мозг - либо переведите сайт в utf8 либо используйте функцию которую вспоминали выше.
Ajax отправляет все данные в utf по причине его простой символьной кодировки.
Спустя 10 часов, 24 минуты, 37 секунд (10.09.2011 - 09:41) redreem написал(а):
народ, вы отвечаете на вопрос, который я не задавал. это тоже самое что искать там где светло. где логика??? а еще программисты...
Спустя 16 минут, 49 секунд (10.09.2011 - 09:58) Игорь_Vasinsky написал(а):
Цитата |
сли кто знает как заставить jQuery отправлять в win-1251 - то проблемы вобще не будет. |
а зачем JQ чего то заставлять? принимаешь данные и меняешь принудител но кодировку через iconv();, не важно юникод это или анси - кодируешь в анси.
Спустя 32 минуты, 4 секунды (10.09.2011 - 10:30) redreem написал(а):
Игорь_Vasinsky, если это будут русские символы в win-1251, то получится каша на выходе.
опишу задачу еще раз кодом:
1. есть входные данные, которые могут быть либо в utf-8 либо в win-1251.
2. на выходы надо получить исключительно win-1251. прав ли я, используя такое решение? (исходя из логики, описаной в топе темы):
опишу задачу еще раз кодом:
1. есть входные данные, которые могут быть либо в utf-8 либо в win-1251.
2. на выходы надо получить исключительно win-1251. прав ли я, используя такое решение? (исходя из логики, описаной в топе темы):
define ('CHAR_208', chr(208));
define ('CHAR_209', chr(209));
function setWin1251($data) {
if (strpbrk($data,CHAR_208.CHAR_209)!='') return iconv("utf-8","cp1251",$data); else return $data;
}
$var=setWin1251($_GET['var']);
Спустя 1 минута, 46 секунд (10.09.2011 - 10:32) Игорь_Vasinsky написал(а):
да. я про это, не важно что приходит - кодируй в анси.
а чё так сложно?
а чё так сложно?
function setWin1251($data) {
iconv("utf-8","windows1251",$data);
return $data;
}
Спустя 26 минут, 49 секунд (10.09.2011 - 10:58) redreem написал(а):
код:
выдает:
а вообще - беру таймаут. ступил поначалу, выяснилось, что 208 и 209 - это русские РС. непонимаю откуда я взял поначалу что это не алфавитные символы. щас буду прокапывать заного. отпишусь.
header("Content-type: text/html; charset=windows-1251");
echo 'абв-'.iconv("utf-8","cp1251",'абв').'<br>';
echo 'abc-'.iconv("utf-8","cp1251",'abc').'<br>';
echo 'all-'.iconv("utf-8","cp1251",'абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyz').'<br>';
выдает:
абв-
abc-abc
all-
а вообще - беру таймаут. ступил поначалу, выяснилось, что 208 и 209 - это русские РС. непонимаю откуда я взял поначалу что это не алфавитные символы. щас буду прокапывать заного. отпишусь.
Спустя 1 час, 9 минут, 7 секунд (10.09.2011 - 12:08) redreem написал(а):
задача снимается.
нашел такое: preg_match('#.#u', $var) - определяет utf не utf.
нашел такое: preg_match('#.#u', $var) - определяет utf не utf.
Спустя 1 час, 3 минуты, 16 секунд (10.09.2011 - 13:11) Игорь_Vasinsky написал(а):
а если модификатор i добавить - то можешь и на регистр внимание не обращать.