когда я компилирую следующий код, я не получаю никакой ошибки времени компиляции. где, поскольку код out для кода отображается как "?????".
Я попытался скомпилировать код как javac hinditest.java
есть ли какой-либо способ получить выход на языке, который я ввел (хинди)
public class hinditest{
public static void main(String args[])
{
String tst = "पाततद";
System.out.print(tst);
}
}
заранее спасибо..
?
означает, что символ не распознается. Это происходит, когда используемая кодировка не поддерживает символ. Проверьте, является ли кодировка UTF-8
. Вы можете открыть терминал с помощью screen -U
и выполнить свой код.
вы можете попробовать это;
public static void main(String[] args) {
System.setProperty("file.encoding", "UTF-8");
String tst = "पाततद";
System.out.print(tst);
}
и если вы используете eclipse, чем вы можете установить в качестве Run Configuration → Common → Encoding → Select UTF-8
UTF-16
, он будет включать все возможные символы.
См. Ниже приведенную ниже последовательность стека для кодирования вашего вывода. Java: как определить (и изменить?) Кодировку System.console?
String tst = "पाततद";
byte[] array = tst.getBytes("UTF-8");
String s = new String(array, Charset.forName("UTF-8"));
System.out.println(s);
Конструктор String не может отличить кодировку, которая используется, и попытается преобразовать ее, используя системный стандарт, который обычно похож на ASCII или ISO-8859-1. Вот почему нормальный A-Za-z выглядит правильно, но затем все остальное начинает терпеть неудачу.
Байт - это тип, который работает от -127 до 127, поэтому для преобразования UTF-8 последовательные байты необходимо объединить. Невозможно, чтобы конструктор String отличал это от байтового массива, поэтому он будет обрабатывать каждый байт отдельно по умолчанию (таким образом, почему базовый буквенно-цифровой код всегда будет работать, когда они попадают в этот диапазон).
Вы можете указать свойство кодирования в командной строке следующим образом:
java -Dfile.encoding=UTF-8 hinditest