Ошибка StringBuilder или нет?

Моя тестовая программа:

public class Test { public static void main(String[] args) { char ch = 65270; StringBuilder sb = new StringBuilder(); sb.append(ch); sb.append(" -> "); sb.append(Integer.valueOf(ch)); System.out.println(sb.toString()); }
}

Результат: 65270 <- لآ

Я не понимаю, почему?

Результат истекает:? → 65270

Фактический результат в терминале (используйте команду "javac Test.java" и "java Test"):? → 65270

Но в консоли Eclipse: 65270 <-?

Это похоже на проблему Eclipse?

1 ответ

Причиной вашего результата является то, что персонаж 65270 является арабской лигатурой. Арабский - это сценарий, написанный справа налево. Поэтому консоль Eclipse изменяет направление слева направо на право налево. Если вы попробуете символ из скрипта, который не является скриптом справа налево, результаты будут такими, как ожидалось. Попробуйте 0x5678, который является старым китайским символом для тонны (веса), например.

licensed under cc by-sa 3.0 with attribution.