#string #file #servlets #encoding #character
#строка #файл #сервлеты #кодирование #символ
Вопрос:
Почему, когда я вызываю этот метод внутри сервлета (либо get, либо post)
public void read () throws IOException
{
try{
File file = new File ("/text.txt");
BufferedReader i = new BufferedReader(new InputStreamReader
(new FileInputStream(file),"UTF8"));
String str1;
while ((str1 = i.readLine()) != null) {
// Print the content on the console
System.out.println (str1);
}
}
catch(UnsupportedEncodingException ue){
System.out.println("Not supported : ");
}
}
консоль выдает вопросительные знаки для всех японских и арабских символов. Однако при вызове этого метода из класса с методом main консоль просто отлично выдает японские и арабские символы. Я использую websphere application server в rational application developer.
Обратите внимание, что метода нет в сервлете, но он является частью другого класса.
Ответ №1:
консоль выдает вопросительные знаки для всех японских и арабских символов
Вам необходимо настроить консоль на использование кодировки, которая охватывает эти символы.
Как это сделать, зависит от того, кто управляет консолью. Если это, например, Eclipse, то вы можете сделать это, установив Window > Preferences > General > Workspace > Кодировку текстового файла в UTF-8.
Ответ №2:
В ответе сервлета вам необходимо правильно установить заголовки. Что-то похожее на следующее.
response.setContentType("text/html; charset=utf-8");
проверьте правильность кодировки японских и арабских символов.
Комментарии:
1. Извините, я не упомянул об этом, но да, я поместил эту строку в качестве первого вызова в методе get, и это не работает
2. Скопируйте и вставьте код вашего сервлета (метод get / post) или исходный контент из браузера. Убедитесь, что вы использовали utf-8 вместо utf8. Большинство людей допускают ошибку one missing -.
3. защищенный void doGet(HttpServletRequest req, HttpServletResponse res) вызывает исключение ServletException, IOException { res.setContentType(«текст / html;кодировка=UTF-8»); CSVWriter writer = new CSVWriter (); writer.read(); } Вот, по сути, и все. Класс CSVWriter содержит этот метод чтения. Меня действительно беспокоит, что что-то настолько простое не хочет работать. Когда я вызываю метод read через метод main, все в порядке, но здесь это не так