Имя: Пароль:
IT
Веб-мастеринг
Кодировка символов в JavaScript
0 Помогите
 
13.04.12
05:33
Делаю вывод в COM-порт строки в кодировке DOS из текстового поля на странице HTML, но выводится не понять что, совсем не та кодировка. Как исправить?

<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=CP866">
       <script language="JavaScript">
           var objComport = new ActiveXObject ( "MSCOMMLib.MSComm.1" );

           function Print ()
           {
               objComport.Output = printtext.value;
           }
       </script>
   </head>

   <body>
       <textarea id=printtext>Красноярск</textarea>
       <button onclick = "Print()">Print</button>
   </body>
</html>
1 Помогите
 
13.04.12
05:52
Если в переменную в тексте скрипта присваиваю текст в кодировке ДОС, и в браузере страница отображается в кодировке ДОС, то в порт выходит не то.
Но если в браузере страница отображается в кодировке Windows, то в порт выходит то что нужно в ДОС кодировке.
А если брать текст не из переменной, а из текстового поля на странице, то вообще всегда что попало выводится
2 Помогите
 
13.04.12
07:19
Up
3 Мизантроп
 
13.04.12
07:23
Скоро вам предложат платную консультацию
4 Помогите
 
13.04.12
07:35
(3) не предложат, потому что никто не знает как сделать.
5 D_Pavel
 
13.04.12
08:07
Используй таблицу кодов символов для перекодирования:

'А' : 1026,
'Б' : 1027,
'В' : 8218,
'Г' : 1107,
'Д' : 8222,
'Е' : 8230,
'Ё' : 1088,
'Ж' : 8224,
'З' : 8225,
'И' : 8364,
'Й' : 8240,
'К' : 1033,
'Л' : 8249,
'М' : 1034,
'Н' : 1036,
'О' : 1035,
'П' : 1039,
'Р' : 1106,
'С' : 8216,
'Т' : 8217,
'У' : 8220,
'Ф' : 8221,
'Х' : 8226,
'Ц' : 8211,
'Ч' : 8212,
'Ш' : 152,
'Щ' : 8482,
'Ъ' : 1113,
'Ы' : 8250,
'Ь' : 1114,
'Э' : 1116,
'Ю' : 1115,
'Я' : 1119,
'а' : 160,
'б' : 1038,
'в' : 1118,
'г' : 1032,
'д' : 164,
'е' : 1168,
'ё' : 1089,
'ж' : 166,
'з' : 167,
'и' : 1025,
'й' : 169,
'к' : 1028,
'л' : 171,
'м' : 172,
'н' : 173,
'о' : 174,
'п' : 1031,
'р' : 1072,
'с' : 1073,
'т' : 1074,
'у' : 1075,
'ф' : 1076,
'х' : 1077,
'ц' : 1078,
'ч' : 1079,
'ш' : 1080,
'щ' : 1081,
'ъ' : 1082,
'ы' : 1083,
'ь' : 1084,
'э' : 1085,
'ю' : 1086,
'я' : 1087
6 Помогите
 
13.04.12
08:59
(5) Спасибо! ! ! Сделал перекодировку, работает!
Закину тебе денег на телефон!

   var rusAdditional = {
'А' : 1026, 'Б' : 1027, 'В' : 8218, 'Г' : 1107, 'Д' : 8222, 'Е' : 8230, 'Ё' : 1088, 'Ж' : 8224, 'З' : 8225, 'И' : 8364,
'Й' : 8240, 'К' : 1033, 'Л' : 8249, 'М' : 1034, 'Н' : 1036, 'О' : 1035, 'П' : 1039, 'Р' : 1106, 'С' : 8216, 'Т' : 8217,
'У' : 8220, 'Ф' : 8221, 'Х' : 8226, 'Ц' : 8211, 'Ч' : 8212, 'Ш' : 152, 'Щ' : 8482, 'Ъ' : 1113, 'Ы' : 8250, 'Ь' : 1114,
'Э' : 1116, 'Ю' : 1115, 'Я' : 1119, 'а' : 160, 'б' : 1038, 'в' : 1118, 'г' : 1032, 'д' : 164, 'е' : 1168, 'ё' : 1089,
'ж' : 166, 'з' : 167, 'и' : 1025, 'й' : 169, 'к' : 1028, 'л' : 171, 'м' : 172, 'н' : 173, 'о' : 174, 'п' : 1031,
'р' : 1072, 'с' : 1073, 'т' : 1074, 'у' : 1075, 'ф' : 1076, 'х' : 1077, 'ц' : 1078, 'ч' : 1079, 'ш' : 1080, 'щ' : 1081,
'ъ' : 1082, 'ы' : 1083, 'ь' : 1084, 'э' : 1085, 'ю' : 1086, 'я' : 1087
   }  
       function Decode(utftext) {
       var c = c2 = string = "";
       var i = 0;

           while ( i < utftext.length ) {
               c = utftext.charAt(i);
               i++;
               c2 = String.fromCharCode(rusAdditional[c]);
               if (c2 == ""){c2 = c};
               string += c2;
               //string += "'"+String.fromCharCode(c)+"' : "+ c + "," + '\n';
           }
           return string;
       }
7 Asmody
 
13.04.12
09:09
Дос/виндовс… в современных браузерах строки в JavaScript в unicode
8 D_Pavel
 
13.04.12
09:47
(7) При чем здесь виндовс?
9 D_Pavel
 
13.04.12
09:49
Автору нужно было перекодировать из UTF8 которую использует JavaScript в дос кодировку.
10 Torquader
 
13.04.12
16:13
Для работы с COM-портом приходилось делать вставки на VbScript, так как там Asc() и Chr() работают именно с однобайтовыми символами, в отличие от JavaScript.
Так как вы используете объекты, то вам можно "прикруить" объект-посредник на Script Component, который делает перекодировку.