2013-09-17 3 views
1

Итак, нас попросили сделать программу, которая будет читать txt-файл и показать сводку символов юникода, в процессе, с которым я столкнулся с проблемой, когда некоторые юникоды кажутся вопросительным знаком в моей консоли, но когда я вывожу его с помощью свинг, его не знак вопроса большеПочему некоторые символы Unicode отображаются в консоли на вопросительном знаке?

System.out.println("\u0126"); // appears to be ? in my console. 

    JOptionPane.showMessageDialog(null,"\u0126"); // seems to display the character successfuly 

Я мог бы просто оставить эту проблему позади, так как я буду использовать делать из GUI, но я хочу объяснить, что-то, что новички, как я мог понять. Почему некоторые юникоды кажутся вопросительным знаком в консоли? но не в качели? (Eclipse, NetBeans, JCreator, JGrasp делают то же самое, я думал, что это проблема с моей IDE). Это проблема в кодировке или шрифте? и что мне делать, чтобы успешно отображать юникоды в консоли без каких-либо проблем с вопросительными знаками в будущем?

К сожалению, я должен спросить ...

+1

Какой терминал? Какая ОС? По умолчанию Windows-терминал (Cmd.exe) может отображать только 256 символов на [кодовая страница 437] (https://en.wikipedia.org/wiki/Code_page_437). –

+0

Прошу прощения, если я не понимаю в своем вопросе, я имел в виду вывод консоли IDE. моя вина. Я использую windows 8 – misserandety

+0

Странно, он отлично работает для меня. Какую кодировку вы используете в своем проекте? И что такое кодировка вашего входного файла? – Pshemo

ответ

1

Персонажи, созданные UNICODE, будут зависеть от символов gylphs, которые являются частью шрифта, который вы используете. Большинство шрифтов имеют только подмножество полного стандарта UNICODE. Например, если вы хотите отображать упрощенный китайский шрифт, шрифт, который вы используете, должен иметь глифы для упрощенного китайского языка.

UNICODE Consortium имеет информацию об этом.

+0

Шрифт не содержит всех символов Юникода (просто потому, что в Unicode больше символов, чем один шрифт, из-за ограничений существующих технологий шрифтов). –

+0

@ JukkaK.Korpela Конечно, в наши дни системы используют резерв шрифта, чтобы гарантировать, что любой символ Юникода может отображаться независимо от выбранного шрифта (пока шрифт, установленный шрифтом, имеет этот символ, и если ничего другого нет [Last Resort шрифт] (http://www.unicode.org/policies/lastresortfont_eula.html)). Таким образом, даже «простой текст» не ограничен глистами 65536 одного шрифта. – bames53

+0

@ bames53, это вовсе не «конечно», и речь идет не о системах, а об рендеринге программного обеспечения. –

0

U0126 -> это символ вне ANSCII (или как там оно называется), что большинство терминалов производства. Символ на самом деле Ħ, но это только покажет, может ли ваша консоль отобразить этот символ.

Вы можете увидеть, может ли установка utf-8 показывать вам подобные символы.

Смежные вопросы