Тема: AHK: asс в разных системах
Столкнулся, что asc в разных системах даёт одинаковые номера разным символам. Как можно этого избежать или хотя бы сделать более универсальным что ли.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Столкнулся, что asc в разных системах даёт одинаковые номера разным символам. Как можно этого избежать или хотя бы сделать более универсальным что ли.
А пример?
Наверно, ANSI-AHK в системах с разными языками.
Да, от настроек языка в системе зависит. У меня § имеет код 167. А в других системах другой.
А как сделать не " ANSI-AHK"?
Да, у меня и не ANSI совсем. В процессах "AutoHotkey Unicode 64-bit" виден.
Можно что-то сделать с этой проблемой?
У вас не ANSI, а на других системах что?
А нормально должен быть совсем другой символ:
http://www.theasciicode.com.ar/extended … e-219.html
°degree symbol
У меня параграф тоже 167, причём на всех версиях АНК. И, кстати, если при нажатом Альте набрать 0167 на цифровой клавиатуре, тоже он появляется. И в виндовской таблице символов он этот код имеет, как в Юникоде, так и в ANSI. Какие именно языки на других системах? Может, скрипт там не в виндовской кодировке сохранён? Например, в западноевропейской DOS он как раз имеет код 245, как по вашей ссылке.
Что можно сделать, чтобы на любом виндовс при любых языках и страницах, код получался одинаковый для одинаковых символов?
Чтобы символ, имеющий разный код в разных кодовых страницах, стал в них иметь одинаковый код? Ничего. Чтобы пользователь вашего скрипта не мог сохранить его в другой кодировке, можно распространять скрипт в скомпилированном виде.
Мне нужно, чтобы текст содержащий спецсимволы гарантировано можно было передать без искажений. Вне зависимости от систем и способов пересылки. Я хотел избежать искажений сохраняя символы в виде ascii-кодов. А оказалось, что с ними тоже не всё в порядке.
Я думал, что дело в особенностях работы "asc", но похоже всё ещё хуже и проблема нерешаема.
Для решения этой проблемы с разными кодировками как раз и придумали Юникод.
Если я предоставлю пользователю скомпилированный скрипт, созданный с помощью Unicode 64-bit, он сможет перевести текст со спецсимволами в своём английском виндовс в точно те же коды ascii, как если бы у него был китайский или арабский виндовс?
А если он отправит мне тот же текст через email, skype или чат, то у него на экране и у меня, символы будут выглядеть всё же по разному? И если попробую тем же скриптом закодировать полученный текст, я получу другие коды ascii?
Или те же?
В юникодном АНК вы получите коды Юникода, а не ASCII. Эти коды одни и те же для всех языков. Что касается отправки этого текста через какие-то другие программы, то тут зависит от программы. Если она не работает с Юникодом, то при вводе этого текста в неё он будет перекодирован в неюникодную кодировку, зависящую от языка.
Для отображения символов ещё нужно, чтобы в системе шрифты соответствующие имелись, в которых эти символы присутствуют, и чтобы они использовались.
И, кстати, если скомпилируете скрипт с 64-битным АНК, то на 32-битных системах он не будет работать. Универсальнее компилировать 32-битным.
Если речь про Юникод, то вместо ASC надёжнее использовать Ord.
MsgBox % Ord("§")
YMP, правильно я понял, что безопасно работать только с отражаемыми символами с кодами ascii от 32 до 126? Они в любой системе и при любой пересылке не меняются?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться