Какая кодировка
Перейти к содержимому

Какая кодировка

  • автор:

Декодер онлайн (decoder online)

Определить исходную кодировку При онлайн передаче электронных документов (почтовая рассылка, скачивание с сайта и т.д.) в файле может сбиться кодировка. В результате вместо привычных слов, предложений и абзацев вы получаете последовательность непонятных символов. Так случается из-за того, что кодирование и декодирование информации происходит некорректно, и устройства отправителя и получателя просто не понимают друг друга. Чтобы расшифровать зашифрованный текст, обратитесь к нашему онлайн декодеру. Decoder (дешифратор или декодер онлайн) от компании Involta способен подобрать нужную кодировку и изменить текст так, чтобы Вы смогли быстро прочитать непонятные «иероглифы». Наш инструмент имеет множество возможностей для декодирования. Он позволяет расшифровать base64 и определить исходные данные, а также перевести информацию в любую другую кодировку онлайн, например, UTF-8, CP-1251, ASCII. Decoder может функционировать как шифратор и дешифратор, то есть вы можете закодировать текст и защитить его содержимое от посторонних глаз. Если вам прислали ссылку с непонятным адресом, то URL-decoder online покажет, на какой сайт она ведет. Еще одна полезная функция сервиса – создать или раскодировать транслит, если нужно сделать перевод с кириллицы на латиницу и наоборот. Декодер работает в режиме онлайн и доступен на любом устройстве с доступом в интернет.

Как узнать, какая кодировка должна применяться к файлу в Intellij Idea?

У меня был файл, в котором часть комментариев на русском отображалась нормально, часть не распознавалась: введите сюда описание изображения Тогда у файла была кодировка windows-1251 . После того, как я изменила кодировку файла на UTF-8 , все комментарии стали нечитаемыми: введите сюда описание изображения Как узнать, какая кодировка должна быть у файла? Т.е., может, есть какие-нибудь алгоритмы наподобие: введите сюда описание изображения

Отслеживать
задан 30 авг 2016 в 13:58
10.7k 6 6 золотых знаков 47 47 серебряных знаков 98 98 бронзовых знаков
30 авг 2016 в 14:07

@ArtemKonovalov, да, онлайн-декодерами я время от времени пользуюсь, но я надеялась, что есть какой-нибудь 100%-ный способ узнать правильную (изначальную) кодировку именно для одного файла Intellij Idea

30 авг 2016 в 14:13

это чистый рандом на самом деле, все эти анализаторы просто перебирают кодировки и проверяет соответствие частоты появления символов в тексте и средней частоты для заданного языка. Они имеют вероятностую природу. 100% вам никто не даст. P.S. в idea я смотрю плагинов такого рода нет.

30 авг 2016 в 14:18

Если одни комментарии отображаются правильно, а другие нет, значит там смесь кодировок и одной правильной кодировки просто не может быть.

30 авг 2016 в 16:16
@Roman какая то очень странная ситуация, но очень может быть.
30 авг 2016 в 17:09

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

В идеале используется кодировка UTF-8.

Если вы хотите сохранить файл в UTF-8 c комментариями, но не переписывая их:
Можно восстановить кодировку Windows-1251 , выделить все, вырезать, поменять кодировку на UTF-8 и вставить вырезанное. Таким образом у Вас будет файл в формате UTF-8 и сохранятся комментарии на кириллице.

Для декодирования можете воспользоваться вот этим сервисом.

Отслеживать
ответ дан 30 авг 2016 в 14:00
1,435 10 10 серебряных знаков 16 16 бронзовых знаков

А как узнать, в какой кодировке должен быть нижний комментарий, который изначально был в неправильной кодировке?

30 авг 2016 в 14:03

@Ksenia Ну Вы говорите, что у Вас комментарии корректно отображались в кодировке windows-1251. P.S. В большинстве своем, если кодировка у файла меняется на UTF-8 и там была кириллица — символы заменяются на ?. Так что попробуйте метод, который я описал выше.

Какая кодировка используются в Lua?

Для участия в обсуждениях и оформления подписки на новые сообщения форума вам необходимо зарегистрироваться.

Страницы: 1 2 След.
Cообщений на странице:
Какая кодировка используются в Lua?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 15:21:14

Цитата
Александр написал:
Какая кодировка используются в Lua?

Мы рекомендуем использовать кодировку ANSI
Для кирилицы выбирать Windows — 1251
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 15:22:56

Цитата
Александр написал:
Какая кодировка используются в Lua?

Я бы хотел узнать о поведении терминала, где например нет кирилицы?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 15:29:29

Цитата
Александр написал:
Я бы хотел узнать о поведении терминала, где например нет кирилицы?

терминал тут не причем, если в Windows нет кирилицы то и в QUIK ее не будет
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 15:36:19

Цитата
Александр написал:
Я бы хотел узнать о поведении терминала, где например нет кирилицы?

Квик не будет работать на системе, где не установлена кирилица?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 15:45:43

Цитата
Александр написал:
Квик не будет работать на системе, где не установлена кирилица?

Конечно будет, на английском же языке.
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 16:03:46

Цитата
Александр написал:
Квик не будет работать на системе, где не установлена кирилица?

В какой кодировке будут строки, если вызвать lua_tolstring для преобразования в unicode?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 16:08:21

Цитата
Александр написал:
В какой кодировке будут строки, если вызвать lua_tolstring для преобразования в unicode?

Мы не проводили исследований на этот счет.
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 16:16:30

Цитата
Александр написал:
В какой кодировке будут строки, если вызвать lua_tolstring для преобразования в unicode?

Вот это поворот 🙂 Проведите, ответьте 🙂
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 16:35:05

Александр,
Зачем?
Нам нет смысла отдельно проводить исследования.
Если Вам интересен ответ, Вы можете узнать его самостоятельно, либо попробовать поискать ответ в интернете.
Lua разработан не нами, наверняка на форумах которые ему посвящены Вы найдете что то нужно.

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 16:47:10

Цитата
Sergey Gorokhov написал:
Александр ,
Зачем?
Нам нет смысла отдельно проводить исследования.
Если Вам интересен ответ, Вы можете узнать его самостоятельно, либо попробовать поискать ответ в интернете.
Lua разработан не нами, наверняка на форумах которые ему посвящены Вы найдете что то нужно.

Странный ответ. При чем здесь lua? Терминал же сохраняет строки для дальнейшего использования в луа?
Вот я хочу узнать, что вы туда записываете.

Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
08.05.2020 16:47:30

Цитата
Александр написал:
В какой кодировке будут строки, если вызвать lua_tolstring для преобразования в unicode?

А как вы вызовете lua_tolstring для преобразования в unicode? Она просто вернет пойнтер на строку в хранилище и все, никаких преобразований не случится. Аналогично lua_pushstring ничего не будет преобразовывать, как дали ей массив байтов, так она их в хранилище и засунет. Отсюда вывод: в какой кодировке скормили, в той и назад получите. Сравнение строк на равенство тоже побайтово делается. Единственное — это сравнение на неравенство, луа вызывает strcoll и поэтому правильный вопрос к арке будет такой: какую локаль устанавливает квик при старте? Мое предположение — locale(«»).

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 16:54:52

Цитата
Александр написал:
Странный ответ. При чем здесь lua? Терминал же сохраняет строки для дальнейшего использования в луа?Вот я хочу узнать, что вы туда записываете.

Странный вопрос, Вы же спрашиваете про Lua, а не про терминал QUIK.
О tostring нам известно не больше чем то что написано в официальной документации на сайте lua.org
Если интересует в какой кодировке сервер QUIK отправляет данные на терминал, то в ANSI.

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 16:58:00

Цитата
Александр написал:
В какой кодировке будут строки, если вызвать lua_tolstring для преобразования в unicode?

Вопрос заключается в какой кодировке будет строка? В ansi не написано в какой кодировке будет.
Если это будет в системной кодировке, то не понятно как быть с кириллическими символами.
Если в Windows — 1251, то понятно как дальше преобразовать в уникод.
Так что вопрос заключается в том, в какой кодировке изначально строка попадает в таблицу луа — в системной или windows — 1251 не зависимо от системной кодировки.

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 17:00:22

Цитата
Александр написал:
Странный ответ. При чем здесь lua? Терминал же сохраняет строки для дальнейшего использования в луа?Вот я хочу узнать, что вы туда записываете.

Кодировка то какая всегда windows-1251? Или зависит от настроек сервера?
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
08.05.2020 17:03:01

Цитата
Александр написал:
в какой кодировке изначально строка попадает в таблицу луа

Я всю жизнь CP_ACP для преобразований в-из анси использую и никто еще не жаловался.
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 17:05:45

Цитата
Александр написал:
в какой кодировке изначально строка попадает в таблицу луа

Хорошо. Если кодировка Windows — 1251, то в терминале где нет кирилицы, будут проблемы.
А сервер квик не знает, какая кодировка у клиента на компьютере есть, а какой нету.

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:06:04

Цитата
Александр написал:
Кодировка то какая всегда windows-1251? Или зависит от настроек сервера?

зависит от настроек сервера, но как правило большая часть (или вообще все) используют кодировку ANSI с кодовой таблицей Windows-1251

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:08:43

Цитата
Александр написал:
Хорошо. Если кодировка Windows — 1251, то в терминале где нет кирилицы, будут проблемы.

Вы имеете ввиду OS где нет кирилицы.
Да будут проблемы.
Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

Цитата
Александр написал:
А сервер квик не знает, какая кодировка у клиента на компьютере есть, а какой нету.

Естественно не знает
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:10:44

Цитата
Sergey Gorokhov написал:
Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

Или, как йже было сказано, не использовать русский там где нет русской кирилицы
терминал QUIK умеет переключаться на английский

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 17:16:46

Цитата
Sergey Gorokhov написал:
Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

В этом случае какая кодировка будет? Например в таблице инструментов есть поле name — наименование инструмента и оно может быть на русском языке.
Тут что будет?

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:30:00

Александр,
Вам уже дали ответ, какой еще вариант вам нужен?
Везде используется ANSI
Всегда
Во всех данных
во всех языках.

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 17:33:03

Цитата
Sergey Gorokhov написал:
Александр ,
Вам уже дали ответ, какой еще вариант вам нужен?
Везде используется ANSI
Всегда
Во всех данных
во всех языках.

Всегда и везде будет кодировка windows-1251 или она зависит от терминала (его языка), ос (наличие кирилицы или нет) или сервека квик?
Я так знаю, что все строки в ANSI. Вопрос изначально был: кодировка строк windows-1251 или зависит от ос (CP_ACP) или сервера квик?

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:46:14

Цитата
Александр написал:
Всегда и везде будет кодировка windows-1251 или она зависит от терминала (его языка), ос (наличие кирилицы или нет) или сервека квик?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
зависит от настроек сервера, но как правило большая часть (или вообще все) используют кодировку ANSI с кодовой таблицей Windows-1251

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 17:52:33

Цитата
Александр написал:
Всегда и везде будет кодировка windows-1251 или она зависит от терминала (его языка), ос (наличие кирилицы или нет) или сервека квик?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
зависит от настроек сервера, но как правило большая часть (или вообще все) используют кодировку ANSI с кодовой таблицей Windows-1251

Получается, что в терминале на английском языке на английской винде, в таблице текущих параметров в поле бумага — будет аракадабра?

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:54:01

Цитата
Александр написал:
Получается, что в терминале на английском языке на английской винде, в таблице текущих параметров в поле бумага — будет аракадабра?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
Да будут проблемы.Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 17:54:33

Цитата
Александр написал:
Получается, что в терминале на английском языке на английской винде, в таблице текущих параметров в поле бумага — будет аракадабра?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
Да будут проблемы.Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский
Цитата
Sergey Gorokhov написал:
Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 18:09:21

Цитата
Александр написал:
Получается, что в терминале на английском языке на английской винде, в таблице текущих параметров в поле бумага — будет аракадабра?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
Да будут проблемы.Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский
Цитата
Sergey Gorokhov написал:
Но они как правило решаются настройкой «язык для программ, не поддерживающих юникод» = русский

Отображение значений полей зависит от языка терминала? Не всегда есть возможность переключатся на язык для программ, не поддерживающих уникод.
Терминал не поддерживает уникод в 2020 году. Получается терминал в китайской винде работать не будет, даже его английская версия?
Значения полей не верно будут отображаться. Так получается?

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 18:15:33

Цитата
Александр написал:
Отображение значений полей зависит от языка терминала?

Логично что если в настройках терминала выбран английский то и интерфейс и все значения будут на английском.

Цитата
Александр написал:
Получается терминал в китайской винде работать не будет, даже его английская версия?

К сожалению у нас нет китайской винды чтобы проверить. Однако английская раскладка поддерживается во всех локализациях Windows.

Цитата
Александр написал:
Значения полей не верно будут отображаться. Так получается?

Вопрос не понятен, что значит «не верно»?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 18:18:54

Цитата
Sergey Gorokhov написал:
К сожалению у нас нет китайской винды чтобы проверить.

Кстати на польской Windows, QUIK на английском работает прекрасно.
Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 18:19:30

Цитата
Александр написал:
Отображение значений полей зависит от языка терминала?

Логично что если в настройках терминала выбран английский то и интерфейс и все значения будут на английском.

Цитата
Александр написал:
Получается терминал в китайской винде работать не будет, даже его английская версия?

К сожалению у нас нет китайской винды чтобы проверить. Однако английская раскладка поддерживается во всех локализациях Windows.

Цитата
Александр написал:
Значения полей не верно будут отображаться. Так получается?

В русском терминале название акции — «Газпром», а в английском — она будет называться по-другому?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 18:21:56

Цитата
Александр написал:
В русском терминале название акции — «Газпром», а в английском — она будет называться по-другому?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
Логично что если в настройках терминала выбран английский то и интерфейс и все значения будут на английском.

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 19:15:07

Цитата
Александр написал:
В русском терминале название акции — «Газпром», а в английском — она будет называться по-другому?

Вы задаете одни и теже вопросы по кругу.
Вам уже дали ответ:

Цитата
Sergey Gorokhov написал:
Логично что если в настройках терминала выбран английский то и интерфейс и все значения будут на английском.

Ответить прямо религия запрещает? Мне ваши ответы не понятны, поэтому задаю уточнящие вопросы.
Есть ли квик джуниор с интерфейсом на английском языке для теста?

Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
08.05.2020 19:16:46

tostring работает со строками в коде ASCII (American Standart Code for Inmormation Interchange)
вернее ASCIIZ

Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
08.05.2020 19:22:16

на самом деле переменная в которую записываем строку не содержит указатель на строку,
а содержит хэш строки.
поэтому сравнение строк в луа делается быстро как и для числе,
так как сравниваются числа хэш

Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
08.05.2020 19:26:22
tostring вообще-то все равно какая кодировка
Пользователь
Сообщений: 330 Регистрация: 27.08.2018
08.05.2020 19:31:38
трындец, уши вянут от ваших вендузяцких лозунгов
https://www.lua.org/manual/5.3/manual.html#2.1

Lua is 8-bit clean: strings can contain any 8-bit value, including embedded zeros ('\0'). Lua is also encoding-agnostic; it makes no assumptions about the contents of a string.

QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 19:32:22

Цитата
Александр написал:
Ответить прямо религия запрещает? Мне ваши ответы не понятны, поэтому задаю уточнящие вопросы.

Что именно не понятно во фразе «интерфейс и все значения будут на английском»?

Цитата
Александр написал:
В русском терминале название акции — «Газпром», а в английском — она будет называться по-другому?

Хорошо, отвечаем прямо, да будет по другому, а если точнее по английски, а если еще точнее то GAZPROM.
такой ответ понятен?

Цитата
Александр написал:
Есть ли квик джуниор с интерфейсом на английском языке для теста?

отдельного терминала QUIK на английском языке не существует.
Есть просто терминал, и в нем есть просто настройка, которую просто надо поменять.
меню Система — Настройки — Языковые установки.
Нюанс в том, что не каждый сервер брокера поддерживает английский, это можно уточнить у брокера.

Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
08.05.2020 19:41:42

Цитата
Николай Камынин написал:
tostring работает со строками в коде ASCII (American Standart Code for Inmormation Interchange)
вернее ASCIIZ

Абсолютно неверное утверждение. В случае автоматического преобразования числа в строку да, получается ASCIIZ (а можно сказать, что получается utf-8 или win-1251 или что угодно, т.к. первая страница у всех codepage одинаковая, если не учитывать экзотику), но в случае строки возвращается строка как она есть, ровно в том виде, в каком ее туда засунули, в том числе со внутренними нулями (что автоматически отвергает ASCIIZ и, кстати, позволяет при некоторой осторожности впихнуть даже utf-16).

Пользователь
Сообщений: 208 Регистрация: 21.02.2015
08.05.2020 20:11:31

Цитата
Александр написал:
Ответить прямо религия запрещает? Мне ваши ответы не понятны, поэтому задаю уточнящие вопросы.

Что именно не понятно во фразе «интерфейс и все значения будут на английском»?

Цитата
Александр написал:
В русском терминале название акции — «Газпром», а в английском — она будет называться по-другому?

Хорошо, отвечаем прямо, да будет по другому, а если точнее по английски, а если еще точнее то GAZPROM.
такой ответ понятен?

Цитата
Александр написал:
Есть ли квик джуниор с интерфейсом на английском языке для теста?

Квик джуниор, который подключается к вашему демо серверу, поддерживает английский?
QUIK clients support
Сообщений: 3879 Регистрация: 23.01.2015
08.05.2020 20:32:46

Цитата
Александр написал:
Квик джуниор, который подключается к вашему демо серверу, поддерживает английский?

Да поддерживает
Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
09.05.2020 09:19:40

Цитата
Николай Камынин написал:
tostring работает со строками в коде ASCII (American Standart Code for Inmormation Interchange)
вернее ASCIIZ
Цитата
Николай Камынин написал:
tostring вообще-то все равно какая кодировка

Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
09.05.2020 09:27:32

поясняю для тех кто в танке
—————————
текст в любой кодировке — это массив байт
конец массива обозначается нулевым байтом,
поэтому в массивах с текстом запрещен нулевой байт
но если в массиве байтов нет нуля то это может быть массив не текста
———————
знание кодировки требуется лишь генератору символов на устройстве отображения
——————
поэтому если отображения нет , то кодировка не имеет значение, если все строки текста в программе имеют одинаковую кодировку
то с ними можно работать как с массивами байт
———————-
оператору tostring вообще не требуется знать кодировки так как его задача заменить хеш указателем на массив байт с нулем в конце

Пользователь
Сообщений: 1519 Регистрация: 30.01.2015
09.05.2020 09:32:59

пример — строки луа.

Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 10:27:41

Цитата
Николай Камынин написал:
текст в любой кодировке — это массив байт

Вообще все в компьютере это массив байт. Остальное все неверно. Ноль в конце это чисто сишная фишка, в паскале их нет например. Строка это не байты, а codepoints, каждая из которых может быть больше байта (до четырех например в utf8). Если вы разрежете строку посреди codepoint, обе половины уже не будут строками или, в лучшем случае, будут битыми строками. Отображение это вообще отдельная тема, там не только codepoints действуют, композиция включается, а еще куча параметров конкретного шрифта. Знание кодировки нужно для любых действий со строкой, отличных от простого копирования. Это если говорить о строках, а не о кучке мусора с приделанным ноликом. Прежде чем пояснять, стоит все же хоть немного тему изучить.

Пользователь
Сообщений: 3129 Регистрация: 30.01.2015
09.05.2020 11:48:30

Цитата
Николай Камынин написал:
текст в любой кодировке — это массив байт

ну почитайте хотя бы документацию:
цитата:
————————————
lua_tolstring[-0, +0, e]const char *lua_tolstring (lua_State *L,
int index,
size_t *len);Конвертирует Lua значение по заданному индексу в C строку. Если len не является NULL, она также устанавливает указатель *len с длиной строки. Lua значение должно быть строкой или числом; в противном случае функция возвращает NULL. Если значение является числом, то lua_tolstring также изменяет действительное значение в стеке на строку. (Такое изменение дезориентирует функцию lua_next , когда lua_tolstring применяется для ключей во время обхода таблицы.)

lua_tolstring возвращает полностью согласованный, внутри Lua состояния, указатель на строку.
В этой строке всегда имеется нуль (‘\0’), после последнего символа (как в C).

Пользователь
Сообщений: 330 Регистрация: 27.08.2018
09.05.2020 12:13:52

Цитата
Николай Камынин написал:
ну почитайте хотя бы документацию:

да. да . только до конца параграфа 🙂

Пользователь
Сообщений: 330 Регистрация: 27.08.2018
09.05.2020 12:17:50

Цитата
Александр написал:
Терминал не поддерживает уникод в 2020 году.

и про линукс и макос они тоже не слышали . на данном историческом этапе .
бесплатно же . смирись 🙂
Пользователь
Сообщений: 1359 Регистрация: 21.08.2015
09.05.2020 12:59:41

Николай Камынин, вы выдергиваете особенность реализации и позиционируете ее как отличительный признак строки вообще. Луа добавляет ноль чисто для удобства и даже можно сказать чисто технически, потому что есть lua_pushlstring, принимающая размер, и вы можете сделать так

const char hello[] = "hello"; lua_pushlstring(s, hello, 4); // actually stores "hell"

Если бы луа не добалял ноль, то в следующем вызове

const char * pstr = lua_tostring(s, -1);

вы бы получили «hell» без нуля на конце и крэшнули бы приложение, пытаясь работать с ним сишными функциями. Именно поэтому луа ноль и добавляет, чтобы всегда возвращать терминированную строку. А теперь следите за руками. В сях я пишу

const wchar_t str1[] = L"HELLO"; const wchar_t str2[] = L"DOLLY"; lua_getglobal(s, "strcat"); lua_pushlstring(s, reinterpret_cast(str1), ::wcslen(str1) * sizeof(wchar_t)); lua_pushlstring(s, reinterpret_cast(str2), ::wcslen(str2) * sizeof(wchar_t)); lua_call(s, 2, 1); size_t len; const wchar_t * pstr = reinterpret_cast(lua_tolstring(s, -1, &len)); ::std::wstring str(pstr, len);

в луа пишу

function strcat(s1, s2) return s1 .. s2 end

и внезапно получаю (широкую!) строку «HELLODOLLY». То есть луа не только сохранил строки в utf-16 и потом правильно вернул, но и правильно их склеил даже. Почему? А потому что плевал он на нолики в конце. У него есть сохраненная длина строки и по ней он ориентируется. Для сравнения сишный strcat (который по ноликам ориентируется) на таких строках сфейлит, вернет «HD», потому что тут после каждого байта ноль идет. Все это к чему. К тому, что в луа строки это тупо мусор заданной длины (даже без нолика), никакой семантики луа им не придает. А где должен бы придавать, там фейлит. Например, если я эту строчку «DOLLY» сделаю ключом в таблице (из сей), луа это слопает на ура. Но вот из самого луа я этого ключа не увижу (через перебор всех ключей только), потому что кодировка не совпадает. О чем и говорил выше, любая именно строковая операция кроме копирования требует знания кодировки. Как только нужна семантика, тут луа умывает руки.

Выбор кодировки текста при открытии и сохранении файлов

Как правило, при совместной работе с текстовыми файлами нет необходимости вникать в технические аспекты хранения текста. Однако если необходимо поделиться файлом с человеком, который работает с текстами на других языках, скачать текстовый файл из Интернета или открыть его на компьютере с другой операционной системой, может потребоваться задать кодировку при его открытии или сохранении.

Когда вы открываете текстовый файл в Microsoft Word или другой программе (например, на компьютере, язык операционной системы на котором отличается от того, на котором написан текст в файле), кодировка помогает программе определить, в каком виде нужно вывести текст на экран, чтобы его можно было прочитать.

В этой статье

  • Общие сведения о кодировке текста
  • Выбор кодировки при открытии файла
  • Выбор кодировки при сохранении файла
  • Поиск кодировок, доступных в Word

Общие сведения о кодировке текста

То, что отображается на экране как текст, фактически хранится в текстовом файле в виде числового значения. Компьютер преобразует числические значения в видимые символы. Для этого используется кодикон.

Кодировка — это схема нумерации, согласно которой каждому текстовому символу в наборе соответствует определенное числовое значение. Кодировка может содержать буквы, цифры и другие символы. В различных языках часто используются разные наборы символов, поэтому многие из существующих кодировок предназначены для отображения наборов символов соответствующих языков.

Различные кодировки для разных алфавитов

Сведения о кодировке, сохраняемые с текстовым файлом, используются компьютером для вывода текста на экран. Например, в кодировке «Кириллица (Windows)» знаку «Й» соответствует числовое значение 201. Когда вы открываете файл, содержащий этот знак, на компьютере, на котором используется кодировка «Кириллица (Windows)», компьютер считывает число 201 и выводит на экран знак «Й».

Однако если тот же файл открыть на компьютере, на котором по умолчанию используется другая кодировка, на экран будет выведен знак, соответствующий числу 201 в этой кодировке. Например, если на компьютере используется кодировка «Западноевропейская (Windows)», знак «Й» из исходного текстового файла на основе кириллицы будет отображен как «É», поскольку именно этому знаку соответствует число 201 в данной кодировке.

Юникод: единая кодировка для разных алфавитов

Чтобы избежать проблем с кодированием и декодированием текстовых файлов, можно сохранять их в Юникоде. В состав этой кодировки входит большинство знаков из всех языков, которые обычно используются на современных компьютерах.

Так как Word работает на базе Юникода, все файлы в нем автоматически сохраняются в этой кодировке. Файлы в Юникоде можно открывать на любом компьютере с операционной системой на английском языке независимо от языка текста. Кроме того, на таком компьютере можно сохранять в Юникоде файлы, содержащие знаки, которых нет в западноевропейских алфавитах (например, греческие, кириллические, арабские или японские).

Выбор кодировки при открытии файла

Если в открытом файле текст искажен или выводится в виде вопросительных знаков либо квадратиков, возможно, Word неправильно определил кодировку. Вы можете указать кодировку, которую следует использовать для отображения (декодирования) текста.

  1. Откройте вкладку Файл.
  2. Нажмите кнопку Параметры.
  3. Нажмите кнопку Дополнительно.
  4. Перейдите к разделу Общие и установите флажокПодтверждать преобразование формата файла при открытии.

Примечание: Если установлен этот флажок, Word отображает диалоговое окно Преобразование файла при каждом открытии файла в формате, отличном от формата Word (то есть файла, который не имеет расширения DOC, DOT, DOCX, DOCM, DOTX или DOTM). Если вы часто работаете с такими файлами, но вам обычно не требуется выбирать кодировку, не забудьте отключить этот параметр, чтобы это диалоговое окно не выводилось.

Если почти весь текст выглядит одинаково (например, в виде квадратов или точек), возможно, на компьютере не установлен нужный шрифт. В таком случае можно установить дополнительные шрифты.

Чтобы установить дополнительные шрифты, сделайте следующее:

  1. Нажмите кнопку Пуск и выберите пункт Панель управления.
  2. Выполните одно из указанных ниже действий. В Windows 7
    1. На панели управления выберите раздел Удаление программы.
    2. В списке программ щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить.

    В Windows Vista

    1. На панели управления выберите раздел Удаление программы.
    2. В списке программ щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить.

    В Windows XP

    1. На панели управления щелкните элемент Установка и удаление программ.
    2. В списке Установленные программы щелкните Microsoft Office или Microsoft Word, если он был установлен отдельно от пакета Microsoft Office, и нажмите кнопку Изменить.

    Совет: При открытии текстового файла в той или иной кодировке в Word используются шрифты, определенные в диалоговом окне Параметры веб-документа. (Чтобы вызвать диалоговое окно Параметры веб-документа, нажмите кнопку Microsoft Office, затем щелкните Параметры Word и выберите категорию Дополнительно. В разделе Общие нажмите кнопку Параметры веб-документа.) С помощью параметров на вкладке Шрифты диалогового окна Параметры веб-документа можно настроить шрифт для каждой кодировки.

    Выбор кодировки при сохранении файла

    Если не выбрать кодировку при сохранении файла, будет использоваться Юникод. Как правило, рекомендуется применять Юникод, так как он поддерживает большинство символов большинства языков.

    Если документ планируется открывать в программе, которая не поддерживает Юникод, вы можете выбрать нужную кодировку. Например, в операционной системе на английском языке можно создать документ на китайском (традиционное письмо) с использованием Юникода. Однако если такой документ будет открываться в программе, которая поддерживает китайский язык, но не поддерживает Юникод, файл можно сохранить в кодировке «Китайская традиционная (Big5)». В результате текст будет отображаться правильно при открытии документа в программе, поддерживающей китайский язык (традиционное письмо).

    Примечание: Так как Юникод — это наиболее полный стандарт, при сохранении текста в других кодировках некоторые знаки могут не отображаться. Предположим, например, что документ в Юникоде содержит текст на иврите и языке с кириллицей. Если сохранить файл в кодировке «Кириллица (Windows)», текст на иврите не отобразится, а если сохранить его в кодировке «Иврит (Windows)», то не будет отображаться кириллический текст.

    Если выбрать стандарт кодировки, который не поддерживает некоторые символы в файле, Word пометит их красным. Вы можете просмотреть текст в выбранной кодировке перед сохранением файла.

    При сохранении файла в виде кодированного текста из него удаляется текст, для которого выбран шрифт Symbol, а также коды полей.

    Выбор кодировки

    1. Откройте вкладку Файл.
    2. Выберите пункт Сохранить как. Чтобы сохранить файл в другой папке, найдите и откройте ее.
    3. В поле Имя файла введите имя нового файла.
    4. В поле Тип файла выберите Обычный текст.
    5. Нажмите кнопку Сохранить.
    6. Если появится диалоговое окно Microsoft Office Word — проверка совместимости, нажмите кнопку Продолжить.
    7. В диалоговом окне Преобразование файла выберите подходящую кодировку.
    8. Чтобы использовать стандартную кодировку, выберите параметр Windows (по умолчанию).
    9. Чтобы использовать кодировку MS-DOS, выберите параметр MS-DOS.
    10. Чтобы задать другую кодировку, установите переключатель Другая и выберите нужный пункт в списке. В области Образец можно просмотреть текст и проверить, правильно ли он отображается в выбранной кодировке.

    Примечание: Чтобы увеличить область отображения документа, можно изменить размер диалогового окна Преобразование файла.

    Поиск кодировок, доступных в Word

    Word распознает несколько кодировок и поддерживает кодировки, которые входят в состав системного программного обеспечения.

    Ниже приведен список письменностей и связанных с ними кодировок (кодовых страниц).

    Система письменности

    Используемый шрифт

    Юникод (UCS-2 с прямым и обратным порядком байтов, UTF-8, UTF-7)

    Стандартный шрифт для стиля «Обычный» локализованной версии Word

    Windows 1256, ASMO 708

    Китайская (упрощенное письмо)

    GB2312, GBK, EUC-CN, ISO-2022-CN, HZ

    Китайская (традиционное письмо)

    BIG5, EUC-TW, ISO-2022-TW

    Windows 1251, KOI8-R, KOI8-RU, ISO8859-5, DOS 866

    Английская, западноевропейская и другие, основанные на латинице

    Windows 1250, 1252-1254, 1257, ISO8859-x

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *