/ / Chińskie znaki wyświetlane jako znaki zapytania w terminalu Mac - java, macos, unicode, utf-8, terminal

Chińskie znaki wyświetlane jako znaki zapytania w terminalu Mac - java, macos, unicode, utf-8, terminal

Próbuję odzyskać niektóre chińskie znaki UT-8 uni z bazy danych przy użyciu pliku Java. Kiedy to robię, znaki są zwracane jako znaki zapytania.

Jednak gdy wyświetlam znaki z bazy danych (używając select * from ...) znaki są wyświetlane normalnie. Kiedy drukuję ciąg znaków w pliku Java składającym się z chińskich znaków, są one również drukowane normalnie.

Miałem ten problem w Eclipse: kiedy uruchomiłem program, znaki były drukowane jako znaki zapytania. Jednak ten problem został rozwiązany, gdy zapisałem plik Java w formacie utf-8.

Uruchomienie „ustawień regionalnych” w terminalu obecnie zwraca to:

LANG="en_GB.utf-8"
LC_COLLATE="en_GB.utf-8"
LC_CTYPE="en_GB.utf-8"
LC_MESSAGES="en_GB.utf-8"
LC_MONETARY="en_GB.utf-8"
LC_NUMERIC="en_GB.utf-8"
LC_TIME="en_GB.utf-8"
LC_ALL=

Próbowałem również skompilować mój plik Java za pomocą tego:

 javac -encoding utf-8 [java file]

Ale nadal wynikiem są znaki zapytania.

To dość dziwne, jak czasami wyświetla znaki. Czy ktoś ma na to wytłumaczenie? A nawet lepiej, jak to naprawić, aby znaki były poprawnie wyświetlane?

Odpowiedzi:

4 dla odpowiedzi № 1

The System.out printstream nie jest tworzony jako strumień wydruku utf-8. Możesz go przekonwertować na taki:

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class JavaTest {

public static void main(String[] args) {


try{
PrintStream out = new PrintStream(System.out, true, "utf-8");

out.println("Hello");
out.println("施华洛世奇");
out.println("World");
}
catch(UnsupportedEncodingException UEE){

//Yada yada yada
}
}
}

Możesz również ustaw domyślne kodowanie zgodnie z tutaj przez:

java -Dfile.encoding=utf-8  -jar JavaTest.jar