powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не распознаётся кодировка
11 сообщений из 11, страница 1 из 1
Не распознаётся кодировка
    #36112524
Ichisen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При внедрении системы велезла проблема кодировки на IE6 при тестах же такой проблемы небыло.
При передаче информации от php файла аяксу, аякс выдаёт "?????" вместо русского текста.
Подскажите как можно решить данную проблему?
...
Рейтинг: 0 / 0
Не распознаётся кодировка
    #36112868
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Везде использовать utf-8
...
Рейтинг: 0 / 0
Не распознаётся кодировка
    #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
Не распознаётся кодировка
    #36113958
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Везде" означает, что АБСОЛЮТНО все упоминания windows-1251 надо заменить на UTF-8. А то получается из html логин-пароль уходят в 1251, а сервер думает, что ему прислали UTF-8 и пытается из 1251 сделать 1251.


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

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

Вы не поняли, это рабочий код, просто в некоторых версиях IE6 он не поддерживается частично, т.е. все присланные данные через аякс кириллицей выгледят как "?????". При замене на utf-8 произошло следующие, html фаил стал вовсе не отображатся, даже при ручной установки кодировки в IE6 на utf-8.
Что ещё странно, если попытатся вывести результат AJAX запроса в alert то он правильно распознаётся.
...
Рейтинг: 0 / 0
Не распознаётся кодировка
    #36114497
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckAntonariyБазы еще не научились воспринимать UTF.
Да ну??? Пользуюсь MS SQL Server 2008 на кодировке utf8.Хорошая новость. Восьмерку не видел еще.
...
Рейтинг: 0 / 0
Не распознаётся кодировка
    #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
Не распознаётся кодировка
    #36121913
Фотография ZeroHold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

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

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


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