Java + Unicode + (консоль и / или SQL) = сбой? - PullRequest
1 голос
/ 29 февраля 2012

Это расстраивает.Когда я запускаю следующую программу, я вижу «Garci? A» в консоли вместо «García», тогда как, если я запускаю ее в отладчике Eclipse, garciaString содержит «García».В чем дело?Проблема в System.out?Нужно ли настраивать его специально для печати Unicode?

package com.example.unicode;

public class UnicodeTest {
    public static void main(String[] args) {
        String garciaString = "Garci\u0301a";
        System.out.println(garciaString);
    }
}

edit: Я подумал, что консоль не печатает правильное значение из-за шрифтов.Но я также вставляю «Garci? A» в базу данных SQL.JDBC + SQL обрабатывает Unicode?Если нет, то как мне справиться с INSERT INTO mydb (id, name) VALUES (1, "Garci\u0301a")?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Это означает, что консоль Eclipse не использует кодировку UTF-8.Вы должны изменить это в настройках.См. Получение вывода Unicode в консоли Eclipse и в этой статье .

1 голос
/ 29 февраля 2012

Существует проблема с консолью / системной консолью Eclipse и т. Д. Java работает внутренне на Unicode, но с выводом есть больше хитрости.

Как правило, если вы выводите в файл - всегда используйте OutputStringWriter и указывайте правильнокодировки, но при печати в System.out ожидайте поведения, определенного операционной системой.Консоль Eclipse может быть настроена, с консолью Windows это сложнее.Вы всегда можете направить стандартный вывод в файл и просмотреть результаты в редакторе обработки юникода, таком как gedit или Notepad ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...