/ / Символи Java Unicode після u 00ff - java, eclipse, unicode

Java Unicode Characters після U 00ff - java, eclipse, unicode

Я не можу надрукувати значення unicode після 00ff, замість цього я "отримую"? "Символ після виконання цього в Eclipse. Це очікувана поведінка?

System.out.println("u01ff");

Відповіді:

5 за відповідь № 1

Eclipse використовує кодування за замовчуванням на платформі за замовчуванням (яке є cp1252 в Windows) для декодування символів під час збереження текстових файлів і під час запису в стандартний вихідний потік (як використовується System.out). Вам потрібно чітко встановити його на utf-8 для досягнення світового домінування.

введіть опис зображення тут

Зауважте, що таким чином вам також не потрібно використовувати ці uXXXX Unicode більше не працює, щоб представити цих символів у текстових файлах джерел.

Ці знаки запитання викликані тим, що діаграма, якою використовується вихідний потік, не підтримує символ, як зазначено у вхідному потоці.

Дивись також:


3 для відповіді № 2

Проблема полягає в кодуванні, що використовується з System.out; за замовчуванням це власне кодування вашої платформи (зазвичай не utf-8). Ви можете явно змінити кодування, замінивши потік:

try {
PrintStream ps = new PrintStream(System.out, true, "utf-8");
System.setOut(ps);
} catch (UnsupportedEncodingException error) {
System.err.println(error);
}

Після цього (заборона шрифту або проблеми з кодуванням в базовому середовищі), всі символи Unicode повинні друкуватися правильно System.out.

РЕДАГУВАТИ Грунтуючись на перебігу між мною та BalusC на його відповідь, цього недостатньо (або навіть потрібно), щоб речі працювали всередині Eclipse. Ви маєте вирішити дві проблеми: використання правильного кодування під час запису в System.out а потім використовуючи правильне кодування, колипредставлення виводу консолі у поданні консолі Eclipse. Відповідь BalusC стосується обох цих питань. На жаль, ця адреса не буде запущена за межами Eclipse. Для цього вам потрібно або скористатися моїм підходом вище, або встановити кодування часу виконання за замовчуванням. Це можна зробити за допомогою прапора -Dfile.encoding=utf-8 у командному рядку або встановлення змінної середовища JAVA_TOOL_OPTIONS включити -Dfile.encoding=utf-8. Для успішного запуску коду поза Eclipse, це, мабуть, найкращий підхід.


0 для відповіді № 3

Java може чудово обробляти ці символи. Але команда виходів матиме конкретне кодування.

І хіба що це кодування щось на зразок utf-8або UTF-16, він не зможе кодувати кожен символ в Unicode. І коли він зустріне символ, який він не може представляти, він буде замінений знаком питання.


0 для відповіді № 4

JVM використовує кодування файлів за замовчуванням для System.out так само.

Наприклад, у Linux, якщо ваш $LANG змінна встановлена ​​на de_DE.utf-8, значення для file.encoding буде виведено відповідно і встановлено utf-8.

Якщо JVM не може отримати бажане налаштування, ви можете змінити кодування файлу, встановивши системну властивість:

java -Dfile.encoding = utf-8 ...

у командному рядку.

Ви можете зробити це також у Eclipse використовуючи a Запустіть конфігурацію (контекстне меню - Запустити як - Запустити конфігурації ... - Аргументи - Аргументи ВМ)

Отже, це працює як для командного рядка, так і для Eclipse, і немає необхідності чітко визначати кодування у джерелі.


Якщо для значення встановлено значення

java -Dfile.encoding = iso-8859-1

наприклад, може бути представлена ​​лише підмножина символів Unicode, оскільки цей набір символів підтримує лише обмежену кількість символів. Інші виявляться як ?.


Є ще дві речі, про які слід пам’ятати:

  • Пристрій, який приймає потік (термінал, оболонка тощо), повинен його правильно декодувати. Що стосується терміналу GNOME, наприклад, ви можете встановити кодування символів у меню.

  • Шрифт, який використовується цим терміналом тощо, повинен містити графічне зображення цього символу