Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Не печатаются русские буквы


Автор: Nikola661 15.5.2007, 07:41
Здравствуйте!!! Использую struts, хочу вывести на печать содержимое файла. Печать идет, но русские буквы печатаются каряво, не могу понять smile . Может что с кодировкой?? Спасибо!!!
Цитата


public class Hello extends Action{
    public ActionForward execute(ActionMapping mapping,
               ActionForm form,
               HttpServletRequest request,
               HttpServletResponse response) throws ServletException, ClassNotFoundException, PrintException, FileNotFoundException
        {
        String st = request.getParameter("field");
        if (st.equals("ok")) {
            return mapping.findForward("ok");
        } else {
            System.out.println(Locale.getDefault()); \\Говорит, что  ru
            javax.print.PrintService ps = PrintServiceLookup.lookupDefaultPrintService ();
            DocPrintJob job = ps.createPrintJob();
            FileInputStream f = new FileInputStream(new File ("c:/1.txt"));
            DocFlavor df = DocFlavor.INPUT_STREAM.AUTOSENSE;
            Doc doc = new SimpleDoc(f, df, null);
            job.print(doc,null);

            return mapping.findForward("false");
        }
        
    }

}

Автор: batigoal 15.5.2007, 07:59
Так в какой кодировке сохранен сам файл? Попробуй указать её явно.
Кроме того, ты читаешь в бинарном режиме, а файл у тебя, видимо, записан в текстовом.

Код

FileInputStream fis = new FileInputStream("c:/1.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF8");

Автор: Nikola661 15.5.2007, 09:59
Цитата(batigoal @ 15.5.2007,  07:59)
Так в какой кодировке сохранен сам файл? Попробуй указать её явно.
Кроме того, ты читаешь в бинарном режиме, а файл у тебя, видимо, записан в текстовом.

Код

FileInputStream fis = new FileInputStream("c:/1.txt");
InputStreamReader isr = new InputStreamReader(fis, "UTF8");

Файл сохранён в кодировке win-1251(ansi-кириллица)

Автор: Nikola661 15.5.2007, 10:17
Я хочу сделать так: получаю какой-то набор данных и мне надо его распечатать в форматированном виде (что-то вроде квитанции, чека, справки), юзер не должен видеть печатаемую информацию на экране, т.е. нажал на кнопку и всё. Есть какие-нибудь примочки чтобы создать документ в опред. форме и распечатать его??  smile 

Автор: tux 15.5.2007, 10:45
Цитата(Nikola661 @  15.5.2007,  10:17 Найти цитируемый пост)
Есть какие-нибудь примочки чтобы создать документ в опред. форме и распечатать его??

Есть средства построения отчетов, для того и предназначены. Например, http://www.jfree.org/jfreereport/index.php, http://jasperforge.org/sf/projects/jasperreports, http://www.eclipse.org/birt/phoenix/.

Автор: Nikola661 18.5.2007, 07:18
 smile Есть доки?? А то там ничего не понятно!!!  smile 
Выбрал Bird, посоветовали. smile
Если можно какие-нибудь примеры!!  smile 

Автор: tux 18.5.2007, 08:04
Цитата(Nikola661 @  18.5.2007,  07:18 Найти цитируемый пост)
Есть доки?? А то там ничего не понятно!!!

Где там? Вся существующая документация - на сайте Birt.

Цитата(Nikola661 @  18.5.2007,  07:18 Найти цитируемый пост)
Если можно какие-нибудь примеры!! 

Примеры там же.

Автор: Nikola661 30.5.2007, 10:16
Немогу создать Data Source для Bird-отчета.
Тип выбираю JDBC Data Souce.
Driver class: org.firebirdsql.jdbc.FBDriver
DataBase URL: jdbc:firebirdsql://10.11.12.13/c:/db.fdb
User: sysdba
Password:masterkey

Когда начинаю создавать Data Set выходит ошибка.

Автор: _lleopard_ 4.6.2007, 13:03
У меня вопросик связанный с кодировкой.
Я из сервлета отправляю текст который частично состоит из русских букв, потом его получаю в JS а затем вывожу на экран.
Подскажите пожалуйста как закодировать в сервлете, а потом раскодировать в JS что бы нормально получить русские буквы?

Автор: batigoal 4.6.2007, 14:06
Отправить текст из сервлета в той же кодировке, которая применена ко всей выходной HTML-странице (и указана в её заголовке).

Автор: _lleopard_ 5.6.2007, 06:04
Цитата(batigoal @ 4.6.2007,  14:06)
Отправить текст из сервлета в той же кодировке, которая применена ко всей выходной HTML-странице (и указана в её заголовке).

URLEncoder s;
s.encode("текст","windows-1251"));
я вот так отправляю в JS, там уже получаю закодированное, абру-кадабру, как теперь в JS раскодировать что бы получить нормальный текст? Или нужно в сервлете не таким образом кодировать?

Автор: batigoal 5.6.2007, 11:13
В JS не нужно ничего перекодировать. Посмотри исходный код скрипта - там кракозяблы?

К тому же, URLEncoder не предназначен для перекодирования строк. Он URLEncoder. Приведи более полный код.

Автор: _lleopard_ 5.6.2007, 12:47
Да при чём тут более полный код, есть текст "Привет Маша"!!, я его сую в поток out.println(текст),
что мне нужно с ним сделать что бы в скрипте получить нормальный текст. Англ буквы нормально обрабатываются, я русские нет!

Автор: Orange 5.6.2007, 16:28
Код

out.println(new String("текс").getBytes("кодировка на входе"), "кодировка на выходе");

Автор: batigoal 5.6.2007, 18:15
Цитата(_lleopard_ @  5.6.2007,  13:47 Найти цитируемый пост)
я его сую в поток out.println(текст),

Вот именно это я и хотел от тебя услышать.

Автор: _lleopard_ 6.6.2007, 05:53
PrintWriter out = response.getWriter();

у этого потока нет out.println(new String("текс").getBytes("кодировка на входе"), "кодировка на выходе"); вот этого метода.? 
помогите кто знает..
Да и ещё вопрос как в JS это дело раскодировать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)