Проблема кодировки java tomcat utf-8

Я разрабатываю простое веб-приложение, используя java/jsp/tomcat/mysql, и самая большая проблема заключается в кодировке символов, потому что мне нужно иметь дело с кодировкой UTF-8 вместо кодировки по умолчанию. 8851.

Сначала я хотел бы описать структуру моей программы. Я использую сервлет Controller.java для обработки всех запросов. Итак, в web.xml у меня есть сервлет Controller, который принимает все запросы от *.do.

Затем этот контроллер отправит запрос на основе запрошенного URL-адреса, например, если клиент запрашивает register.do, контроллер отправит запрос в Register.java.

А в Register.java есть метод, который принимает запрос в качестве параметра, а именно:

public String perform(HttpServletRequest request) {
    do something with the request...
}

Итак, проблема в том, что если я хочу напечатать что-то в UTF-8 внутри этого метода, он выдаст случайные символы. Например, у меня есть Enum, в котором хранится несколько констант, одно из свойств Enum — это его имя на традиционном китайском языке. Если я напечатаю это в

public static void main(Stirng[] args{
    System.out.println(MyEnum.One.getChn());
    logger.info(MyEnum.One.getChn());
}

, это будет правильно напечатано на китайском языке. Однако, если я помещу точный код в метод, работающий с HttpServletRequest:

public String perform(HttpServletRequest request) {
    System.out.println(MyEnum.One.getChn());
    logger.info(MyEnum.One.getChn());
}

Они печатаются как случайные символы, но я вижу из окна отладки (затмение), что переменные содержат правильные китайские символы.

Такая же ситуация возникает, когда я хочу сохранить значение из request.getParameter().В окне отладки я вижу, что переменная содержит правильные символы, но когда я распечатываю ее или пытаюсь сохранить в базе данных, это случайные символы.

Я не знаю, почему поведение ведет себя так, и это блокирует меня от чтения отправленных значений формы и сохранения их в базе данных. Может ли кто-нибудь дать несколько советов по этому поводу?

Большое спасибо.

8
задан Evan Chu 7 June 2012 в 17:31
поделиться