Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Хранимая Java процедура , кириллица  [new]
peregar
Member

Откуда:
Сообщений: 6
Всем привет! Помогите решить проблему.

Есть джава хранимка в оракле:

create or replace and compile java source named printer as
import java.text.*;
import java.io.*;
import java.util.*;
import java.net.*;

public class Printer
{
    public static String print(String param1,String param2){
       
    
    String printInstruction =  
                               
                              "CLL +\n" + 
	                              "DIR 4 \n" + 	                              
	                              "NASC 1251\n"+
	                              "FT \"Swiss 721 BT\",10 \n" +  
	                              
	                              "PP 90,15\n" +
	                              "PX 50,220,3 \n" +
	                              "PP 85,20\n" +
	                              "PT \"Тест!!!!\" \n"+	                              
	                              "PP 90,232\n" +
	                              "PX 50,320,3 \n" +                                
	                              
	                              "PF";
                                
                                
  
    
    try {
          Socket socket = new Socket("192.168.15.40", 9100);
          OutputStream os = socket.getOutputStream();
        
          PrintWriter pw = new PrintWriter(os);
          pw.println(printInstruction);
          pw.flush();
          pw.close();
          socket.close();

      
    }
    catch (IOException e) {
      e.printStackTrace();

		}
    
    return "";
    
    }
    
    
	
}



Это вывод текста на принтер. Русский текст выодится крякозябрами. Тот же класс если выполнить из просто джавы то все нормально.

Кто в курсе в чем может быть проблема помогите плиз!! спасибо!
28 окт 08, 17:08    [6366818]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая Java процедура , кириллица  [new]
Jack Carver
Member

Откуда: obi2ru.blogspot.com
Сообщений: 1717
Какая у вас кодировка БД?

Попробуйте такой подход.

import java.text.*;
import java.io.*;
import java.util.*;
import java.net.*;

public class Printer
{
    public static String print(String param1,String param2){
       
    
    String printInstruction =  
                               
                              "CLL +\n" + 
	                              "DIR 4 \n" + 	                              
	                              "NASC 1251\n"+
	                              "FT \"Swiss 721 BT\",10 \n" +  
	                              
	                              "PP 90,15\n" +
	                              "PX 50,220,3 \n" +
	                              "PP 85,20\n" +
	                              "PT \"Тест!!!!\" \n"+	                              
	                              "PP 90,232\n" +
	                              "PX 50,320,3 \n" +                                
	                              
	                              "PF";
                                
                                
  
    
    try {    	
         StringReader strReader = new StringReader(printInstruction); 
         
         ByteArrayOutputStream baos = new ByteArrayOutputStream();     
         OutputStreamWriter writer = new OutputStreamWriter(baos,"utf-8");        
         int c;
         while ((c = strReader.read()) != -1) 
         {
         	writer.write(c);       
         }
         writer.flush();               
         writer.close();
         
         byte[] b = baos.toByteArray();

         Socket socket = new Socket("192.168.15.40", 9100);
         OutputStream os = socket.getOutputStream();
         os.write(b);    
         os.close();
         socket.close();
    	      
    }
    catch (IOException e) {
      e.printStackTrace();

		}
    
    return "";
    
    }
    
    
	
}
28 окт 08, 17:59    [6367205]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая Java процедура , кириллица  [new]
VBR
Member

Откуда:
Сообщений: 79
Скорее всего у тебя планируется передавать русский текст в param2.
Попробуй его перед вызовом конвертнуть
convert(v_param2, 'CL8MSWIN1251')
28 окт 08, 18:00    [6367214]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая Java процедура , кириллица  [new]
peregar
Member

Откуда:
Сообщений: 6
Всем большое спасибо коллеги!!! :)

заработало вот так:

try {
	          
	          Socket socket = new Socket("192.168.15.40", 9100);
	          OutputStream os = socket.getOutputStream();
	        
	          OutputStreamWriter writer = new OutputStreamWriter(os,"Cp1251");
	          
	          PrintWriter pw = new PrintWriter(writer);
	          pw.println(printInstruction);
	          pw.flush();
	          pw.close();
	          socket.close();

	      
	    }
	    catch (IOException e) {
	      e.printStackTrace();

			}
28 окт 08, 19:32    [6367549]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить