How do I display unicode characters in the Eclipse

2020-07-09 09:25发布

问题:

I am creating a small Java application that uses Unicode characters to create rows and columns of boxes in the console window in Eclipse Keplar. My code works completely fine but the output of each Unicode character I print is a small box instead of the Unicode character I want to print.

My code is as follows. I have two classes.

My main class:

package assign03;

import java.util.Scanner;

public class Assign03 {

private static int columns;
private static int cWidth;
private static int rows;
private static int rHeight;
private static Table table;

public static void main(String[] args) {
        table = new Table();
        Scanner input = new Scanner(System.in);

        System.out.print("Enter the number of columns: ");
        columns = input.nextInt();

        System.out.print("Enter the width of the columns: ");
        cWidth = input.nextInt();

        System.out.print("Enter the number of rows: ");
        rows = input.nextInt();

        System.out.print("Enter the width of the rows: ");
        rHeight = input.nextInt();

        table.printFirstLine(columns, cWidth);

        for (int r = 0; r < rows; r++) {
            for (int rh = 0; rh < rHeight; rh++) {
                table.printVerticalLine(columns, cWidth);
            }
            if (r < (rows - 1)
                table.printInternalLine(columns, cWidth);
        }

        table.printLastLine(columns, cWidth);
        input.close();
    }
}

And my Table.java class:

package assign03;

public class Table {

    private char firstLine[] = { '\u2501', '\u250F', '\u2533', '\u2513' };
    private char internalLine[] = { '\u2501', '\u2523', '\u254B', '\u252B' };
    private char lastLine[] = { '\u2501', '\u2517', '\u253B', '\u251B' };
    private char verticalLine[] = { '\u2503' };
    private char whiteSpace[] = { '\u2003' };

    public void printFirstLine(int columns, int cWidth) {

        System.out.print(firstLine[1]);

        for (int c = 0; c < columns; c++) {
            for (int cw = 0; cw < cWidth; cw++) {
                System.out.print(firstLine[0]);
            }
            if (c < (columns - 1))
                System.out.print(firstLine[2]);
        }

        System.out.println(firstLine[3]);
    }

    public void printVerticalLine(int columns, int cWidth) {
        for (int c = 0; c <= columns; c++) {
            System.out.print(verticalLine[0]);
            for (int cw = 0; cw < cWidth; cw++) {
                System.out.print(whiteSpace[0]);
            }
        }
        System.out.println();
    }

    public void printInternalLine(int columns, int cWidth) {
        System.out.print(internalLine[1]);

        for (int c = 0; c < columns; c++) {
            for (int w = 0; w < cWidth; w++) {
                System.out.print(internalLine[0]);
            }
            if (c < (columns - 1))
                System.out.print(internalLine[2]);
        }

        System.out.println(internalLine[3]);
    }

    public void printLastLine(int columns, int cWidth) {

        System.out.print(lastLine[1]);

        for (int c = 0; c < columns; c++) {
            for (int w = 0; w < cWidth; w++) {
                System.out.print(lastLine[0]);
            }
            if (c < (columns - 1))
                System.out.print(lastLine[2]);
        }

        System.out.println(lastLine[3]);
    }
}

When the application runs, the output is as follows. I use inputs of 4 for columns, rows, column width, and row width.

Any reason why my console output looks like that? Can anybody help me get the Unicode to display properly? Thanks.

回答1:

The small box means that the current font doesn't have those symbols.

You will have to find a font which supports them and configure the console font (search the preferences for "console") to use it.

If it still doesn't work, make sure you have configured the Java application that you're running (i.e. which prints to the console) to emit UTF-8. In Eclipse, you can do that by opening the launch config and setting "Console Encoding" to UTF-8 (see this blog post or here)



回答2:

What worked for me was to go to Preferences, under Workspace, and change "Text file encoding" to UTF-8.