I’m a bit new to java, When I assign a unicode string to
String str = "\u0142o\u017Cy\u0142";
System.out.println(str);
final StringBuilder stringBuilder = new StringBuilder();
InputStream inStream = new FileInputStream("C:/a.txt");
final InputStreamReader streamReader = new InputStreamReader(inStream, "UTF-8");
final BufferedReader bufferedReader = new BufferedReader(streamReader);
String line = "";
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
stringBuilder.append(line);
}
Why are the results different in both cases the file a.txt also contains the same string. but when i print output of the file it prints z\u0142o\u017Cy\u0142 instead of the actual unicode characters. Any idea how do i do this if i want to file content also to be printed as string is being printed.
Your code should be correct, but I guess that the file “a.txt” does not contain the Unicode characters encoded with UTF-8, but the escaped string “\u0142o\u017Cy\u0142”.
Please check if the text file is correct, using an UTF-8 aware editor such as recent versions of Notepad or Notepad++ on Windows. Or edit it with your favorite hex editor – it should not contain backslashes.
I tried it with “€” as UTF-8-encoded content of the file and it gets printed correctly. Note that not all Unicode characters can be printed, depending on your terminal encoding (really a hassle on Windows) and font.