Странный знак ┐ при печати перевернутого вопроса ¿в System.out.print («¿»)

Когда печатается символ, он возвращает меня

Пример:

System.out.print("¿Seguir?") //Devuelve: ┐Seguir?
5
задан 29.11.2019, 19:02
2 ответа

TeorГ - в на codificaciГіn символов

Каждый 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 (так как это миллионы возможных символов, которые он может представлять).

ExplicaciГіn в твою проблему

В любом случае, твоей проблеме не 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 все он влезает).

SoluciГіn

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Гє Свойств).

4
ответ дан 01.12.2019, 10:35
  • 1
    Habí в забытый codificació n cp437 из D.O.S. Qué те времена. – Mauricio Contreras 29.11.2019, 19:40

У твоего файла должна быть она 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 твоего проекта с Ваших свойств:

introducir la descripción de la imagen aquí

1
ответ дан 01.12.2019, 10:35

Теги

Похожие вопросы