utf-8로 인코딩 된 XML 파일에서 파일/스크립트의 이름을 읽습니다. 그런 다음 VBScript로 전달됩니다. VBScript는이 전달 된 프로그램/스크립트가 인수로 제공되는 두 번째 프로그램을 시작합니다. 인수가 영어로되어 있으면 VBScript가 성공적으로 실행됩니다. VBScript에서 러시아 이름으로 파일/스크립트를 호출 할 수 없습니다.
그러나 XML에서 읽을 이름 (러시아어를 내 경우) 영어가 아닌 경우, VBScript를 해당 파일을 찾는데 실패
.내가 Windows에서 그것을 실행하고 있습니다로 전용 "에서 cscript"를 사용하여 Java 코드에서의 VBScript를 실행하고 있습니다. 내가 VBScript를 실행하고, 명령 프롬프트에 붙여 자바 프로그램에 의해 발사 명령을 복사 할 경우
은 그러나, 일반적으로 인수 이름에도 불구하고 실행 영어 이외의 언어입니다.
그런 다음 VBScript에서 파일/스크립트 이름을 하드 코딩했습니다. VBScript를 UCS2-LE로 인코딩을 변경하고 명령 프롬프트에서 직접 실행합니다. 그것은 정상적으로 실행됩니다. VBScript에 사용 된 다른 인코딩에 대해서는 실행되지 않았습니다. 또한 영어가 아닌 텍스트는? UCS2-LE 이외의 다른 인코딩에서.
는 그럼 난 자바 UTF16-LE로 파일/스크립트 이름을 인코딩하기 위해 노력하고 VBScript를로 통과시켰다. VBScript에서 어떤 인코딩이 사용되었는지에 관계없이 실패합니다. 다시 한번 Java 프로그램의 표준 출력에 인쇄 된 명령을 복사하여 cmd에서 실행하면 실행됩니다. Java에서 인쇄 된 명령이 영어가 아닌 텍스트를 올바르게 표시합니다.누구든지 문제를 해결할 수 있습니까? 모든 상대적인 도움을 크게 주시면 감사하겠습니다.
이것은 현재 내가하고있는 일입니다. 나는 Java로부터 VBScript에 러시아어 텍스트를 다루는 논쟁을 전달할 필요가있다.
두 가지 접근 방식을 사용하려고했습니다.
아래 코드의 첫 번째 방법은 UnicodeLittle 인코딩을 사용하여 러시아어 텍스트를 파일에 씁니다. 파일이 UCS-2LE 인코딩에 있음을 발견했습니다. 그런 다음 VBScript는 해당 파일에서 값을 읽고 스크립트가 성공적으로 실행됩니다.
두 번째 접근 방식에서는 인코딩 된 러시아어 텍스트를 스크립트에 인수로 직접 전달하려고했습니다. VbScript가 스크립트를 열 수 없다는 메시지가 나타나지 않습니다. 이것이 내가 원하는 해결책이다.
은 아래 첨부 된 자바 코드입니다.
도움을 주시면 감사하겠습니다.
public class CallProgram
{
private static String encodeType = "UnicodeLittle";
private File scriptName = new File("F:\\Trial Files\\scriptName.txt");
public static void main(String[] args)
{
CallProgram obj = new CallProgram();
Runtime rt = Runtime.getRuntime();
try
{
**//Approach1 - Writes text to file and calls vbscript which reads text from file and uses it as an argument to a program**
String sName = "D:\\CheckPoints_SCRIPTS\\Менеджер по качеству"; //Russian Text
byte [] encodedByte= sName.getBytes(encodeType);
String testCase = new String(encodedByte, encodeType); //New string containing russian text in UnicodeLittle encoding...
obj.writeToFile(testCase); //Writing russian string to file...
String mainStr = "cscript /nologo \"D:\\Program Files\\2.0.1.3\\Adapter\\bin\\scriptRunner_FileRead_Write.vbs\"";
Process proc1 = rt.exec(mainStr);
int exit = proc1.waitFor();
System.out.println("Exit Value = " + exit);
**//Approach 2 - Passing encoded Russian text directly to VbScript...**
//This is not working for me...
String [] arrArgs = { "cscript", "/nologo", "\"D:\\Program Files\\IBM\\Rational Adapters\\2.0.1.3\\QTPAdapter\\bin\\scriptRunner.vbs\"", testcase };
ProcessBuilder process = new ProcessBuilder(arrArgs);
Process proc2 = process.start();
proc2.waitFor();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException intue)
{
intue.printStackTrace();
}
}
//Function to write Russian text to file using encoding UnicodeLittle...
private void writeToFile(String testCase)
{
FileOutputStream fos = null;
Writer out = null;
try
{
fos = new FileOutputStream(this.scriptName);
out = new OutputStreamWriter(fos, encodeType);
out.write(testCase);
out.close();
fos.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
finally
{
try
{
if (fos != null)
{
fos.close();
fos = null;
}
if (out != null)
{
out.close();
out = null;
}
}
catch(IOException ioe)
{
fos = null;
out = null;
}
}
} // End of method writeToFile....
}