powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Русские буквы
7 сообщений из 7, страница 1 из 1
Русские буквы
    #33176881
SPB777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример взял из форума, но проблема осталась прежняя.

Исходник:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 import  java.io.PrintStream;

 public   class  HelloWorld {
     public   static   void  main(String[] args) {
        try {
        // Создаю поток, который перекодирует символы из CP1251 в CP866
        // и выводит все это в System.out
        PrintStream pst =  new  PrintStream(System.out, true, "CP866");
        // Устанавливаю этот поток в качестве выходного для программы
        System.setOut(pst);
        // Все, написанные здесь символы будут автоматически перекодированы
        // в CP866
        System.out.println("Привет всем");
       }  catch  (Exception e){
           e.printStackTrace(System.out);
       }
    }

}
Результат:
c:\JVS>java HelloWorld
ЈЯебЦР брЦг

Проблема:
Вместо "Привет всем" вот такая лажа. Как добиться вывод русскими буквамим.
...
Рейтинг: 0 / 0
Русские буквы
    #33177203
fynda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPB777Пример взял из форума, но проблема осталась прежняя.
c:\JVS>java HelloWorld
ЈЯебЦР брЦг


Сам файл с программой в какой кодировке?
...
Рейтинг: 0 / 0
Русские буквы
    #33177703
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fynda SPB777Пример взял из форума, но проблема осталась прежняя.
c:\JVS>java HelloWorld
ЈЯебЦР брЦг


Сам файл с программой в какой кодировке?

%)
...
Рейтинг: 0 / 0
Русские буквы
    #33177953
DAA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAA
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
/**
* CodepagePrintStream.java
*
* Copyright (C) 1998-2000 COMITA Ltd. All Rights Reserved.
*/
 import  java.io.*;

/**
* Класс реализует методы PrintStream с возможностью работы в нужной кодировке.
*
* Обычно используется для замены стандартных System.out и System.err:
* <pre>
*  public static void main(String[] args)
*  {
*   // Установка вывода консольных сообщений в нужной кодировке
*   try
*     {
*      System.setOut(new CodepagePrintStream(System.out,System.getProperty("console.encoding","Cp866")) );
*     }
*   catch(UnsupportedEncodingException e)
*     {
*      Msg.message(Msg.ALERT,"Unable to setup console codepage: " + e);
*      Msg.printStackTrace(Msg.ALERT,e);
*     }
* </pre>
*
* @author Sergey Astakhov
* @version 1.01, 24.07.2000
*/
 public   class  CodepagePrintStream  extends  PrintStream
{
  public  CodepagePrintStream(OutputStream os,String cp)  throws  UnsupportedEncodingException
 {
   super (os);

   this .autoFlush = false;
   this .charOut =  new  OutputStreamWriter( this ,cp);
   this .textOut =  new  BufferedWriter( this .charOut);
 }

  private   boolean  autoFlush = false;
  private   boolean  trouble = false;

 /**
  * Track both the text- and character-output streams, so that their buffers
  * can be flushed without flushing the entire stream.
  */
  private  BufferedWriter textOut;
  private  OutputStreamWriter charOut;

    /** Check to make sure that the stream has not been closed */
     private   void  ensureOpen()  throws  IOException {
	 if  (out ==  null )
	     throw   new  IOException("Stream closed");
    }

    /**
     * Flush the stream.  This is done by writing any buffered output bytes to
     * the underlying output stream and then flushing that stream.
     *
     * @see        java.io.OutputStream#flush()
     */
     public   void  flush() {
	 synchronized  ( this ) {
	     try  {
		ensureOpen();
		out.flush();
	    }
	     catch  (IOException x) {
		trouble = true;
	    }
	}
    }

     private   boolean  closing = false; /* To avoid recursive closing */

    /**
     * Close the stream.  This is done by flushing the stream and then closing
     * the underlying output stream.
     *
     * @see        java.io.OutputStream#close()
     */
     public   void  close() {
	 synchronized  ( this ) {
	     if  (! closing) {
		closing = true;
		 try  {
		    textOut.close();
		    out.close();
		}
		 catch  (IOException x) {
		    trouble = true;
		}
		textOut =  null ;
		charOut =  null ;
		out =  null ;
	    }
	}
    }

    /**
     * Flush the stream and check its error state.  The internal error state
     * is set to <code>true</code> when the underlying output stream throws an
     * <code>IOException</code> other than <code>InterruptedIOException</code>,
     * and when the <code>setError</code> method is invoked.  If an operation
     * on the underlying output stream throws an
     * <code>InterruptedIOException</code>, then the <code>PrintStream</code>
     * converts the exception back into an interrupt by doing:
     * <pre>
     *     Thread.currentThread().interrupt();
     * </pre>
     * or the equivalent.
     *
     * @return True if and only if this stream has encountered an
     *         <code>IOException</code> other than
     *         <code>InterruptedIOException</code>, or the
     *         <code>setError</code> method has been invoked
     */
     public   boolean  checkError() {
	 if  (out !=  null )
	    flush();
	 return  trouble;
    }

    /**
     * Set the error state of the stream to <code>true</code>.
     *
     * @since JDK1.1
     */
     protected   void  setError() {
	trouble = true;
    }


    /*
     * Exception-catching, synchronized output operations,
     * which also implement the write() methods of OutputStream
     */

    /**
     * Write the specified byte to this stream.  If the byte is a newline and
     * automatic flushing is enabled then the <code>flush</code> method will be
     * invoked.
     *
     * <p> Note that the byte is written as given; to write a character that
     * will be translated according to the platform's default character
     * encoding, use the <code>print(char)</code> or <code>println(char)</code>
     * methods.
     *
     * @param  b  The byte to be written
     * @see #print(char)
     * @see #println(char)
     */
     public   void  write( int  b) {
	 try  {
	     synchronized  ( this ) {
		ensureOpen();
		out.write(b);
		 if  ((b == '\n') && autoFlush)
		    out.flush();
	    }
	}
	 catch  (InterruptedIOException x) {
	    Thread.currentThread().interrupt();
	}
	 catch  (IOException x) {
	    trouble = true;
	}
    }

    /**
     * Write <code>len</code> bytes from the specified byte array starting at
     * offset <code>off</code> to this stream.  If automatic flushing is
     * enabled then the <code>flush</code> method will be invoked.
     *
     * <p> Note that the bytes will be written as given; to write characters
     * that will be translated according to the platform's default character
     * encoding, use the <code>print(char)</code> or <code>println(char)</code>
     * methods.
     *
     * @param  buf   A byte array
     * @param  off   Offset from which to start taking bytes
     * @param  len   Number of bytes to write
     */
     public   void  write( byte  buf[],  int  off,  int  len) {
	 try  {
	     synchronized  ( this ) {
		ensureOpen();
		out.write(buf, off, len);
		 if  (autoFlush)
		    out.flush();
	    }
	}
	 catch  (InterruptedIOException x) {
	    Thread.currentThread().interrupt();
	}
	 catch  (IOException x) {
	    trouble = true;
	}
    }

    /*
     * The following private methods on the text- and character-output streams
     * always flush the stream buffers, so that writes to the underlying byte
     * stream occur as promptly as with the original PrintStream.
     */

     private   void  write( char  buf[]) {
	 try  {
	     synchronized  ( this ) {
		ensureOpen();
		textOut.write(buf);
		textOut.flush();
		charOut.flush();
		 if  (autoFlush) {
		     for  ( int  i =  0 ; i < buf.length; i++)
			 if  (buf[i] == '\n')
			    out.flush();
		}
	    }
	}
	 catch  (InterruptedIOException x) {
	    Thread.currentThread().interrupt();
	}
	 catch  (IOException x) {
	    trouble = true;
	}
    }

     private   void  write(String s) {
	 try  {
	     synchronized  ( this ) {
		ensureOpen();
		textOut.write(s);
		textOut.flush();
		charOut.flush();
		 if  (autoFlush && (s.indexOf('\n') >=  0 ))
		    out.flush();
	    }
	}
	 catch  (InterruptedIOException x) {
	    Thread.currentThread().interrupt();
	}
	 catch  (IOException x) {
	    trouble = true;
	}
    }

     private   void  newLine() {
	 try  {
	     synchronized  ( this ) {
		ensureOpen();
		textOut.newLine();
		textOut.flush();
		charOut.flush();
		 if  (autoFlush)
		    out.flush();
	    }
	}
	 catch  (InterruptedIOException x) {
	    Thread.currentThread().interrupt();
	}
	 catch  (IOException x) {
	    trouble = true;
	}
    }


    /* Methods that do not terminate lines */

    /**
     * Print a boolean value.  The string produced by <code>{@link
     * java.lang.String#valueOf(boolean)} is translated into bytes according to
     * the platform's default character encoding, and these bytes are written
     * in exactly the manner of the <code>{@link #write(int)} method.
     *
     * @param      b   The <code>boolean</code> to be printed
     */
     public   void  print( boolean  b) {
	write(b ? "true" : "false");
    }

    /**
     * Print a character.  The character is translated into one or more bytes
     * according to the platform's default character encoding, and these bytes
     * are written in exactly the manner of the <code>{@link #write(int)}
     * method.
     *
     * @param      c   The <code>char</code> to be printed
     */
     public   void  print( char  c) {
	write(String.valueOf(c));
    }

    /**
     * Print an integer.  The string produced by <code>{@link
     * java.lang.String#valueOf(int)} is translated into bytes according to the
     * platform's default character encoding, and these bytes are written in
     * exactly the manner of the <code>{@link #write(int)} method.
     *
     * @param      i   The <code>int</code> to be printed
     */
     public   void  print( int  i) {
	write(String.valueOf(i));
    }

    /**
     * Print a long integer.  The string produced by <code>{@link
     * java.lang.String#valueOf(long)} is translated into bytes according to
     * the platform's default character encoding, and these bytes are written
     * in exactly the manner of the <code>{@link #write(int)} method.
     *
     * @param      l   The <code>long</code> to be printed
     */
     public   void  print( long  l) {
	write(String.valueOf(l));
    }

    /**
     * Print a floating-point number.  The string produced by <code>{@link
     * java.lang.String#valueOf(float)} is translated into bytes according to
     * the platform's default character encoding, and these bytes are written
     * in exactly the manner of the <code>{@link #write(int)} method.
     *
     * @param      f   The <code>float</code> to be printed
     */
     public   void  print( float  f) {
	write(String.valueOf(f));
    }

    /**
     * Print a double-precision floating-point number.  The string produced by
     * <code>{@link java.lang.String#valueOf(double)} is translated into bytes
     * according to the platform's default character encoding, and these bytes
     * are written in exactly the manner of the <code>{@link #write(int)}
     * method.
     *
     * @param      d   The <code>double</code> to be printed
     */
     public   void  print( double  d) {
	write(String.valueOf(d));
    }

    /**
     * Print an array of characters.  The characters are converted into bytes
     * according to the platform's default character encoding, and these bytes
     * are written in exactly the manner of the <code>{@link #write(int)}
     * method.
     *
     * @param      s   The array of chars to be printed
     *
     * @throws  NullPointerException  If <code>s</code> is <code>null</code>
     */
     public   void  print( char  s[]) {
	write(s);
    }

    /**
     * Print a string.  If the argument is <code>null</code> then the string
     * <code>"null"</code> is printed.  Otherwise, the string's characters are
     * converted into bytes according to the platform's default character
     * encoding, and these bytes are written in exactly the manner of the
     * <code>{@link #write(int)} method.
     *
     * @param      s   The <code>String</code> to be printed
     */
     public   void  print(String s) {
	 if  (s ==  null ) {
	    s = "null";
	}
	write(s);
    }

    /**
     * Print an object.  The string produced by the <code>{@link
     * java.lang.String#valueOf(Object)} method is translated into bytes
     * according to the platform's default character encoding, and these bytes
     * are written in exactly the manner of the <code>{@link #write(int)}
     * method.
     *
     * @param      obj   The <code>Object</code> to be printed
     */
     public   void  print(Object obj) {
	write(String.valueOf(obj));
    }


    /* Methods that do terminate lines */

    /**
     * Terminate the current line by writing the line separator string.  The
     * line separator string is defined by the system property
     * <code>line.separator</code>, and is not necessarily a single newline
     * character (<code>'\n'</code>).
     */
     public   void  println() {
	newLine();
    }

    /**
     * Print a boolean and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(boolean)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( boolean  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print a character and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(char)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( char  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print an integer and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(int)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( int  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print a long and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(long)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( long  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print a float and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(float)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( float  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print a double and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(double)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println( double  x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print an array of characters and then terminate the line.  This method
     * behaves as though it invokes <code>{@link #print(char[])} and then
     * <code>{@link #println()}</code>.
     */
     public   void  println( char  x[]) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print a String and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(String)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println(String x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }

    /**
     * Print an Object and then terminate the line.  This method behaves as
     * though it invokes <code>{@link #print(Object)} and then <code>{@link
     * #println()}</code>.
     */
     public   void  println(Object x) {
	 synchronized  ( this ) {
	    print(x);
	    newLine();
	}
    }
}

...
Рейтинг: 0 / 0
Русские буквы
    #33177967
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SPB777
...
// Создаю поток, который перекодирует символы из CP1251 в CP866
...


ИМХО Бред. Потому как в памяти Java-машины все строки
лежат в кодировке Unicode. Другое дело - что вы могли
скомпилировать *.class с кривой кодировкой изначально.
...
Рейтинг: 0 / 0
Русские буквы
    #33178059
unicode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может это поможет тынц
...
Рейтинг: 0 / 0
Русские буквы
    #33183891
taison
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня твой код работает, правда у меня русская винда.
Попоробуй ещё так:

import java.io.PrintStream;

public class HelloWorld {
public static void main(String[] args) {
try{
System.out.println("Привет всем");
} catch (Exception e){
e.printStackTrace(System.out);
}
}

}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Русские буквы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]