Каждый carГЎcter он представлен в памяти в действительности некой последовательностью бит. Конечная остановка интерпретирует эту последовательность бит, чтобы показывать корреспондент carГЎcter.
Это значит, что она aplicaciГіn, что envГ - в биты с конечной остановкой должен знать cГіmo конечную остановку interpretarГЎ биты, для того, чтобы они явились правильными символами.
cГіdigo Американского стандартного кода обмена информацией один estГЎndar очень старо, что устанавливает cГіdigos 7 бит (которые могут, поверните как nГєmeros между 0 и 127) для букв алфавита inglГ©s и один montГіn sГ-mbolos mГЎs. AsГ, - например, cГіdigo numГ©rico 97 (patrГіn бит 1100001
) представляет букву a
.
В такое Старое и распространенное это существо cГіdigo допущен всеми конечными остановками, всеми редакторами и всем программным обеспечением в общем. Поэтому текст "Привет" выходит правильно, потому что он кодируется в Американском стандартном коде обмена информацией в памяти как последовательности байт 72, 111, 108, 97
, которая послана в конечную остановку, которая, вынеся tambiГ©n estГЎndar Американский стандартный код обмена информацией, он показывает символы "H", "или", "l", и "в".
Проблема появляется как только ты вытекаешь из символов, предвиденных в cГіdigo Американский стандартный код обмена информацией, как например sГ-mbolo ¿
, или ñ
или ударные гласные, или уже помещенные любой carГЎcter других алфавитов, как cirГ-lico, ГЎrabe, китаец, и т.д.
, Чтобы кодировать любой алфавит estГЎndar настоящий, он называется Unicode и он не ограничивается в cГіdigos 7 бит, но он использует многие mГЎs (так как это миллионы возможных символов, которые он может представлять).
В любом случае, твоей проблеме не estГЎ связанный с Unicode. То, что estГЎ происходя aquГ - состоит в том, что твоя программа выражает к конечной остановке символы используя одну codificaciГіn обозначенная cp1252
, в то время как конечная остановка интерпретирует их используя другую codificaciГіn различный вызов cp437
.
Она codificaciГіn cp1252
- та estГЎndar в Windows с уже много времени. Ты можешь видеть в wikipedia , что в этой codificaciГіn, в carГЎcter ¿
соответствует ему cГіdigo BF
(в этой таблице они cГіdigos они появляются в шестнадцатеричном; этот nГєmero в бинарном serГ - в 10111111
и в десятичном serГ - в 191
).
С другой стороны она codificaciГіn cp437
был той, которая использовала М ДВА, первый оперативный для ПК, и который Windows aГєn сохраняет для консоли. Ты можешь видеть в wikipedia , что в этом кодировании, cГіdigo 191 представляет в carГЎcter ┐
. Это объясняет следовательно то, что происходит с тобой. И ты можешь тестировать, что, если в твоих сообщениях ты включаешь eГ±es или акцент, tambiГ©n saldrГЎn плохо (и ты можешь развлекаться тем, что наблюдаешь подмостки, раньше упомянутые, чтобы видеть cГіmo все он влезает).
La soluciГіn mГЎs простой состоит в том, чтобы менять таблицу cГіdigos консоли windows, для того, чтобы он приспособился, в которую estГЎ используя твою программу Java. Достаточно набивать следующее в конечной остановке:
chcp 1252
Команда chcp
(change code page) позволяет тебе изменять форму, в которой конечная остановка интерпретирует их cГіdigos, который он получает. Поскольку ты можешь представлять, помещать 1252
, он способствует тому, чтобы перешел к тому, чтобы использовать ее codificaciГіn Windows, с тем, что уже verГЎs правильно вывод программы каждый раз, когда программа выразила символы используя саму codificaciГіn .
возможно, что ты находишься другие, программирует, что они выразили в Unicode (в частности в UTF-8, что является способом кодировать такого Unicode как последовательности байт). Сегодня dГ - в es estГЎndar, и поскольку я сказал, вынеси многие mГЎs алфавиты. Чтобы менять консоль windows так что опора UTF-8 ты должен писать chcp 65001
(и ademГЎs конечная остановка должна использовать шрифт, у которого были бы символы в вынесенных алфавитах, из-за которого вероятно, что ты должен менять использованный назначенный по умолчанию шрифт на конечную остановку, в travГ©s Ваш menГє Свойств).
У твоего файла должна быть она codificaciГіn UTF-8
, который является той, которая регулярно используется в IDE для Java, для того, чтобы, таким образом, он смог печатать правильно ее informaciГіn: Вышедшие
System.out.println("¿Seguir?");
:
¿Seguir?
ты Можешь печатать, что codificaciГіn ты используешь в настоящее время в твоем проекте посредством:
System.out.println("defaultCharset: " + java.nio.charset.Charset.defaultCharset());
в Netbeans например ты можешь определять ее codificaciГіn твоего проекта с Ваших свойств:
cp437
из D.O.S. Qué те времена. – Mauricio Contreras 29.11.2019, 19:40