Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не распознаётся кодировка / 11 сообщений из 11, страница 1 из 1
28.07.2009, 09:34
    #36112524
Ichisen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
При внедрении системы велезла проблема кодировки на IE6 при тестах же такой проблемы небыло.
При передаче информации от php файла аяксу, аякс выдаёт "?????" вместо русского текста.
Подскажите как можно решить данную проблему?
...
Рейтинг: 0 / 0
28.07.2009, 11:39
    #36112868
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
Везде использовать utf-8
...
Рейтинг: 0 / 0
28.07.2009, 16:14
    #36113837
Ichisen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
IDVsbruck,

не помогло
html
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<html>
  <head>
    <title>Авторизация</title>
    <meta http-equiv="Content-Type: text/plain; charset=windows-1251">
<script type="text/javascript" language="javascript" charset="windows-1251" src="Avtoriz.js">
		</script>   
</head>
  <body>
      <form method="POST" action="registration.php" OnSubmit="sendRequest(); return false"> 
        Введите код доступа<br>
		<table>
<tr><td>Код доступа: </td><td><input type="text" name="login" value="" max-length="15"></td><td>*</td></tr>
</table>
<table>
		<tr>
		<td><input type="submit" value="Ввод"></td></tr>
		</table>
         </form>
<div id="divStatus"></div>
 </body>
</html>

JavaScript
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
function createXMLHttp() {
        if(typeof XMLHttpRequest != "undefined") { // для браузеров аля Mo-zilla
          return new XMLHttpRequest();
        } else if(window.ActiveXObject) { // для Internet Explorer (all ver-sions)
          var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0",
                   "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp",
                   "Microsoft.XMLHttp"
                   ];
          for (var i =  0 ; i < aVersions.length; i++) {
            try { //
              var oXmlHttp = new ActiveXObject(aVersions[i]);
              return oXmlHttp;
            } catch (oError) {
            }
          }
          throw new Error("Невозможно создать объект XMLHttp.");
        }
      }
      /*Формирует строку запроса "name1=value1&name2=value2&name3...".
        Принимает один аргумент - ссылку на форму.
      */
      //формируем массив элементов  
      function getRequestBody(oForm) {
        var aParams = new Array();
        for(var i =  0 ; i < oForm.elements.length; i++) {
          var sParam = encodeURIComponent(oForm.elements[i].name);
          sParam += "=";
          sParam += encodeURIComponent(oForm.elements[i].value);
          aParams.push(sParam);
        }
        return aParams.join("&");
      }
	  //Отправка запроса
	  function sendRequest() {
        var oForm = document.forms[ 0 ];
        var sBody = getRequestBody(oForm);
        var oXmlHttp = createXMLHttp();
                oXmlHttp.open("POST",oForm.action, true);
        oXmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
                oXmlHttp.onreadystatechange = function() {
          if(oXmlHttp.readyState ==  4 ) {
            if(oXmlHttp.status ==  200 ) {
              saveResult(oXmlHttp.responseText);
            } else {
              saveResult("Ошибка: " + oXmlHttp.statusText);
            }
          }
        };
        oXmlHttp.send(sBody);
      }
      //Для данных от сервера
      function saveResult(sText) 
	  {
	    if(sText=='Автаризация прошла успешно. Вы будете перенаправлены через 3 секунды.')
		{
		setTimeout("document.location.href='GLmenuK.php';",  3000 );
		//document.location.href = "index.php";//перенаправление
		}
        var sElem = document.getElementById("divStatus");
        sElem.innerHTML = sText;
      }
	  function goBack()
	  {
	  document.location.href = "GLmenu.php";//перенаправление
	  }

php
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<?php

header("Content-Type: text/plain; charset=windows-1251");
/* данные переданные методом POST */
$login   =  iconv('utf-8', 'cp1251', $_POST['login']); 

if($login!=null)//Введены ли данные
{

if(preg_match("/[^a-z,A-Z,0-9]/", $login))//Проверка логина на корректность
{echo "Поле Логин может содержать только буквы английского алфавита и цифры";}
else{

$conn = oci_connect("11111", "11111", "127.0.0.1");//Подключаемся к СУБД
    $stid = oci_parse($conn, "select * from Sotrudniki");
    oci_execute($stid);
	$nrows = oci_fetch_all($stid, $results);
for ($i =  0 ; $i < $nrows; $i++ ) {
      if ($login==$results["KOD_DOSTUPA"][$i]){
      
	  session_start();
	  $_SESSION['username'] = $login;
	  $_SESSION['IDsotr'] = $results["ID_SOTRUDNIKA"][$i];
	  $_SESSION['Level'] = $results["LEVED"][$i];
	  $_SESSION['IDPODSOTR'] = $results["ID_PODRAZDELENIYA"][$i];
	  
	  echo 'Автаризация прошла успешно. Вы будете перенаправлены через 3 секунды.';
	 return;


	  }
      
    }
	  echo("Неверный код");
	}
}
else
echo ("нет данных");

?>

Надеюсь подскажете уже голову сломал.
...
Рейтинг: 0 / 0
28.07.2009, 16:44
    #36113958
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
"Везде" означает, что АБСОЛЮТНО все упоминания windows-1251 надо заменить на UTF-8. А то получается из html логин-пароль уходят в 1251, а сервер думает, что ему прислали UTF-8 и пытается из 1251 сделать 1251.


Jah loves you.
...
Рейтинг: 0 / 0
28.07.2009, 16:47
    #36113965
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
AntonariyАБСОЛЮТНО всеКроме iconv конечно. Базы еще не научились воспринимать UTF.

Jah loves you.
...
Рейтинг: 0 / 0
28.07.2009, 18:35
    #36114264
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
AntonariyБазы еще не научились воспринимать UTF.
Да ну??? Пользуюсь MS SQL Server 2008 на кодировке utf8.
...
Рейтинг: 0 / 0
28.07.2009, 20:26
    #36114405
Ichisen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
Antonariy,

Вы не поняли, это рабочий код, просто в некоторых версиях IE6 он не поддерживается частично, т.е. все присланные данные через аякс кириллицей выгледят как "?????". При замене на utf-8 произошло следующие, html фаил стал вовсе не отображатся, даже при ручной установки кодировки в IE6 на utf-8.
Что ещё странно, если попытатся вывести результат AJAX запроса в alert то он правильно распознаётся.
...
Рейтинг: 0 / 0
28.07.2009, 22:04
    #36114497
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
IDVsbruckAntonariyБазы еще не научились воспринимать UTF.
Да ну??? Пользуюсь MS SQL Server 2008 на кодировке utf8.Хорошая новость. Восьмерку не видел еще.
...
Рейтинг: 0 / 0
29.07.2009, 17:25
    #36116193
Ichisen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
решил проблему.
И переходить на utf-8 повсеместно не пришлось!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<?php

header("Content-Type: text/plain; charset=utf-8");
/* данные переданные методом POST */
$login   =  $_POST['login']; 

if($login!=null)//Введены ли данные
{

if(preg_match("/[^a-z,A-Z,0-9]/", $login))//Проверка логина на корректность
{$mes2 = "Поле Логин может содержать только буквы английского алфавита и цифры";
echo iconv('windows-1251', 'utf-8', $mes2);
}
else{

$conn = oci_connect("Alfironius", "Alfironius", "127.0.0.1");//Подключаемся к СУБД
    $stid = oci_parse($conn, "select * from Sotrudniki");
    oci_execute($stid);
	$nrows = oci_fetch_all($stid, $results);
for ($i =  0 ; $i < $nrows; $i++ ) {
      if ($login==$results["KOD_DOSTUPA"][$i]){
      
	  session_start();
	  $_SESSION['username'] = $login;
	  $_SESSION['IDsotr'] = $results["ID_SOTRUDNIKA"][$i];
	  $_SESSION['Level'] = $results["LEVED"][$i];
	  $_SESSION['IDPODSOTR'] = $results["ID_PODRAZDELENIYA"][$i];
	  
	  $mes = "Автаризация прошла успешно. Вы будете перенаправлены через 3 секунды.";
	  echo iconv('windows-1251', 'utf-8', $mes);
	 return;

	  }
      
    }
	$mes1 = "Неверный код";
	  echo iconv('windows-1251', 'utf-8', $mes1);
	}
}
else
$mes = "нет данных";
echo iconv('windows-1251', 'utf-8', $mes);
?>
...
Рейтинг: 0 / 0
02.08.2009, 00:22
    #36121913
ZeroHold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
Antonariy,

ОЙ! Да ну! Все базы давно понимают и любят UTF8. Нужно просто нужные специи включить
...
Рейтинг: 0 / 0
02.08.2009, 00:24
    #36121916
ZeroHold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не распознаётся кодировка
Ichisen,

Одно могу сказать javascript работает только на кодировке UTF8. см. официальную документацию. Все что вам кажется что типа JS написанные на cp1251 на уровне ядра конвертируются в кодировку utf8
именно поэтому все вызовы ajax требуют кодировку данных только в utf кодировке. А вот отображение это уже другая трилогия.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не распознаётся кодировка / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]