2014-03-28 2 views
1

когда я компилирую следующий код, я не получаю никакой ошибки времени компиляции. где, поскольку код out для кода отображается как «?????».компиляция кода в java - хинди требуется выходной

Я попытался компиляции кода, как javac hinditest.java

есть ли способ я могу получить выход на языке, который я поступил (Hindi)

public class hinditest{ 
    public static void main(String args[]) 
    { 
    String tst = "पाततद"; 
    System.out.print(tst); 
    } 
    } 

заранее спасибо ..

+1

Что OS? должен быть Windows? И чтобы получить результат, вам нужно запустить программу. Компиляция не даст выход –

+1

Где вы выходите? К консоли Windows? –

+0

Как вы выполняете код - из командной строки или в среде IDE? –

ответ

2

? означает, что символ не распознается. Это происходит, когда используемая кодировка не поддерживает символ. Проверьте, является ли кодировка UTF-8. Вы можете открыть терминал с помощью screen -U и выполнить свой код.

+1

Кодирование чего именно? Не исходный код. –

+0

, когда я проверял причины для вывода, который я получил, многие люди писали о кодировании в UTF-8 char set .. честно говоря, я не знаю, как его проверить. – GVR

+0

@Marko Topolnik Кодирование окружающей среды – Keerthivasan

2

вы можете попробовать это;

public static void main(String[] args) { 
    System.setProperty("file.encoding", "UTF-8"); 
    String tst = "पाततद"; 
    System.out.print(tst); 
} 

и если вы используете затмение, чем вы можете установить как Конфигурация Run -> Общие -> Кодировка -> Выбрать UTF-8

+0

попробовал это. Все еще получая тот же результат. – GVR

+0

@Shekhar +1, но я рекомендую использовать 'UTF-16', он будет содержать все символы, которые возможны. – Vishrant

0
String tst = "पाततद"; 
byte[] array = tst.getBytes("UTF-8"); 
String s = new String(array, Charset.forName("UTF-8")); 
System.out.println(s); 

Конструктор Строка не может отличить кодировку, которая используется и будет пытаться преобразовать его с помощью стандартной системы, которая, как правило, что-то вроде ASCII или ISO-8859-1. Вот почему нормальный A-Za-z выглядит правильно, но затем все остальное начинает терпеть неудачу.

Байт - это тип, который работает от -127 до 127, поэтому для преобразования UTF-8 последовательные байты необходимо объединить. Конструктор String не может отличить это от байтового массива, поэтому по умолчанию он будет обрабатывать каждый байт по отдельности (поэтому базовая буквенно-цифровая функция всегда будет работать, когда они попадают в этот диапазон).

+0

Это смешно. Строка - это строка, у нее нет кодировки - или, если хотите, она всегда имеет одинаковую кодировку, определенную JLS. –

+0

Книга - это книга, и самолет - это самолет. В чем ваш смысл? И нет, на самом деле строка не является строкой, а скорее массивом символов. Если вы по-прежнему не верите, что я переосмыслил о освещении знаний Java. Кроме того, попробуйте поместить другую кодировку в круглые скобки (например, ISO-8859-1), и вы увидите вывод на консоли MAGICALLY change! – darijan

+0

Конечно, потому что вы уничтожили исходную строку. –

0

Вы можете указать свойство кодировки в командной строке следующим образом:

java -Dfile.encoding=UTF-8 hinditest 
Смежные вопросы