Java: в консоли тайский текст печатается как какой-то странный символ

Когда я печатаю тайский символ в консоли, он показывает какой-то странный символ.

public static void main(String[] args) throws Exception{
        byte[] bytes = "ฝ่ายขาย".getBytes("TIS-620");
        String str =  new  String(bytes);
        System.out.println(str);
}

Это печать ¢

1 ответ

Предполагая, что вы используете eclipse в Windows, чтобы включить UTF-8 в консоли (учитывая, что ваша IDE может использовать кодировку UTF-8 Windows -> Preferences -> General -> Workspace -> Test File Encoding = UTF-8):

  1. Идти к Windows -> Preferences -> Java -> Installed JREsвыберите JRE и Edit. добавлять -Dfile.encoding=UTF-8 к аргументам виртуальной машины по умолчанию (в качестве альтернативы вы можете отредактировать свой eclipse.ini и добавить этот аргумент, но он не работает для меня)

  1. Выберите поддерживающий шрифт консоли UTF-8: Windows -> Preferences -> General -> Appearence -> Debug -> Console Font (выберите Arial, Calibri и т. д.)

  1. Удалите явную кодировку "TIS-620" из вашего метода, как вам нужно в кодированной форме UTF-8

Код:

public static void main(String[] args) throws Exception {
        byte[] bytes = "ฝ่ายขาย".getBytes();

        String str = new String(bytes);
        System.out.println(str);
    }

Что, как указано в комментариях, простое String print

System.out.println("ฝ่ายขาย");

Выход:

ฝ่าย ขาย

Другие вопросы по тегам