Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.03.2021, 12:26
Аспирант
Отправить личное сообщение для Morris Посмотреть профиль Найти все сообщения от Morris
 
Регистрация: 09.04.2020
Сообщений: 32

Кодировка кириллицы в UTF-8
Подскажите метод кодировки кириллицы (текстового аргумента переменной), в UTF-8
Ответить с цитированием
  #2 (permalink)  
Старый 08.03.2021, 12:45
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

TextEncoder кодирует в utf-8 все.
https://developer.mozilla.org/en-US/...PI/TextEncoder
Ответить с цитированием
  #3 (permalink)  
Старый 08.03.2021, 14:07
Аспирант
Отправить личное сообщение для Morris Посмотреть профиль Найти все сообщения от Morris
 
Регистрация: 09.04.2020
Сообщений: 32

чет все равно не понятно. Нужно содержимое v1 преобразовать в utf-8, и присвоить v2
<!DOCTYPE html>
<html>
<head><title>Город</title>
  <meta charset="utf-8"> 
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="https://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>

<script type="text/javascript">$(document).ready(function(){
                ymaps.ready(function(){
                    var geolocation = ymaps.geolocation;                 
                    $('#tow').html(geolocation.city);   
                });
            }); 
        function calculat (obj) {	
		var v1 = ymaps.geolocation.city;
var v2 = v1;
    obj.res1.value=v1;
	 obj.res2.value=v2;
}
        </script>
<center>
 <form name="form" style="width:420px">
<table class=my_table>
<tr align=left><td  align=left>   
</td><td><input type="button" style="width:50px"  name="WB" value="Enter"onclick="calculat(form)">
</td></tr><tr><td align=left>Ваш Город</td><td> 
<input type="text" style="width:80px"  id="res1">
</td></tr>
<tr><td align=left>utf-8</td><td> 
<input type="text" style="width:80px"  id="res2">
</td></tr

<tr><td></td><td>
<div id="tow"></div>
</td></tr>
</table>
</form>
</center>			 
</HTML>

Последний раз редактировалось Morris, 08.03.2021 в 14:12.
Ответить с цитированием
  #4 (permalink)  
Старый 08.03.2021, 15:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

utf-8 это способ кодирования кодов UNICODE в последовательность байт, где каждый символ может занимать от 1 до 6 байт в зависимости от его числового кода.
Что у вас в v1? Строка? В javascript она хранится в кодировке utf-16, где каждый (ну большинство часто используемых) символ хранится как число от 0 до 65535 и занимает 2 байта.
Если ее перекодировать в utf-8 - получится некоторая последовательность байт.
Что вы хотите получить в v2?
utf-8 в javascript можно хранить только в Uint8Array - специальный вид массива, где каждый элемент занимает 1 байт.
C ним невозможно работать как со строкой.

Последний раз редактировалось voraa, 08.03.2021 в 15:31.
Ответить с цитированием
  #5 (permalink)  
Старый 08.03.2021, 15:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Morris,
может так?
var v2 = escape(v1);
Ответить с цитированием
  #6 (permalink)  
Старый 08.03.2021, 16:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Это переведет в esape последовательность в utf-16
"Москва" превращается в "%u041C%u043E%u0441%u043A%u0432%u0430"
А где и зачем это может понадобиться?

В utf-8 esape последовательность должна быть
"%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0"
Что бы ее можно было в url вставлять.
Ответить с цитированием
  #7 (permalink)  
Старый 08.03.2021, 16:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

voraa,
тогда encodeURIComponent
Ответить с цитированием
  #8 (permalink)  
Старый 08.03.2021, 17:19
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

encodeURIComponent переводит пробел в %20, вместо +, если нужно использовать в параметрах url.
Не знаю, всегда ли и насколько это допустимо.
Короче, надо выяснять для чего это автору нужно, и как потом использовать
Ответить с цитированием
  #9 (permalink)  
Старый 08.03.2021, 19:03
Аспирант
Отправить личное сообщение для Morris Посмотреть профиль Найти все сообщения от Morris
 
Регистрация: 09.04.2020
Сообщений: 32

Добавил escape, получилось как надо, работает. Выделяю эту абракадабру и браузер открывает нужный город))),
Но в учебниках пишут что это Устарело, Эта возможность была удалена из веб-стандартов. Хотя некоторые браузеры по-прежнему могут поддерживать её, она находится в процессе удаления. Не используйте её ни в старых, ни в новых проектах. Страницы или веб-приложения, использующие её, могут в любой момент сломаться.
Так тоже работает var v2 = encodeURIComponent(v1);
Для чего это нужно?
1. Нужно привязать код страницы к конкретному городу, и чтобы она не работала в другом городе.
2. Также саму кириллицу (город) в коде хотелось прикрыть абракадаброй, чтобы не читаемо было.
<!DOCTYPE html>
<html>
<head><title>Город</title>
  <meta charset="utf-8"> 
<script src="http://code.jquery.com/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="https://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>

<script type="text/javascript">$(document).ready(function(){
                ymaps.ready(function(){
                    var geolocation = ymaps.geolocation;                 
                    $('#tow').html(geolocation.city);   
                });
            }); 
        function calculat (obj) {	
		var v1 = ymaps.geolocation.city;
var v2 = escape(v1);
    obj.res1.value=v1;
	 obj.res2.value=v2;
}
        </script>
<center>
 <form name="form" style="width:600px">
<table class=my_table>
<tr align=left><td  align=left>   
</td><td><input type="button" style="width:50px"  name="WB" value="Enter"onclick="calculat(form)">
</td></tr><tr><td align=left>Ваш Город</td><td> 
<input type="text" style="width:380px"  id="res1">
</td></tr>
<tr><td align=left>utf-8</td><td> 
<input type="text" style="width:380px"  id="res2">
</td></tr

<tr><td></td><td>
<div id="tow"></div>
</td></tr>
</table>
</form>
</center>			 
</HTML>

Последний раз редактировалось Morris, 08.03.2021 в 19:19.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка iframe. Скрипт с внешнего сайта. HaseProgram Общие вопросы Javascript 10 10.07.2013 16:43
Кодировка в AJAX из ИЕ Liv AJAX и COMET 10 23.03.2012 16:47
Кодировка внешнего JS файла - проблема в Chrome Freddis Opera, Safari и др. 3 26.07.2011 21:48
кодировка UTF-8 в IE6 Александр345 (X)HTML/CSS 1 14.06.2011 14:25
Кодировка в загрузчике FancyUpload vladex AJAX и COMET 5 08.09.2009 17:32