2014-11-23 1 views
1

Моя тестовая программа:Ошибка 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

Я не могу понять, почему он должен делать что-то другое. Какое поведение вы ожидаете? – Philipp

+0

Я получаю '? -> 65270' при запуске этого кода – Eran

+0

@Eran, потому что у вас, вероятно, есть ивритская клавиатура –

ответ

1

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