㈠ 使用java连接linux,执行shell命令返回值有乱码,怎么解决
packagecom.pasier.xxx.util;
importjava.io.IOException;
importjava.io.InputStream;
importjava.nio.charset.Charset;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importch.ethz.ssh2.ChannelCondition;
importch.ethz.ssh2.Connection;
importch.ethz.ssh2.Session;
importch.ethz.ssh2.StreamGobbler;
publicclassRmtShellExecutor{
privatestaticfinalLoggerLOG=LoggerFactory.getLogger(RmtShellExecutor.class);
privateConnectionconn;
privateStringip;
privateStringusr;
privateStringpsword;
privateStringcharset=Charset.defaultCharset().toString();
privatestaticfinalintTIME_OUT=1000*5*60;
publicRmtShellExecutor(Stringip,Stringusr,Stringps){
this.ip=ip;
this.usr=usr;
this.psword=ps;
}
privatebooleanlogin()throwsIOException{
conn=newConnection(ip);
conn.connect();
returnconn.authenticateWithPassword(usr,psword);
}
publicStringexec(Stringcmds)throwsIOException{
InputStreamstdOut=null;
InputStreamstdErr=null;
StringoutStr="";
StringoutErr="";
intret=-1;
try{
if(login()){
Sessionsession=conn.openSession();
session.execCommand(cmds);
stdOut=newStreamGobbler(session.getStdout());
outStr=processStream(stdOut,charset);
LOG.info("caijl:[INFO]outStr="+outStr);
stdErr=newStreamGobbler(session.getStderr());
outErr=processStream(stdErr,charset);
LOG.info("caijl:[INFO]outErr="+outErr);
session.waitForCondition(ChannelCondition.EXIT_STATUS,TIME_OUT);
ret=session.getExitStatus();
}else{
LOG.error("caijl:[INFO]ssh2loginfailure:"+ip);
thrownewIOException("SSH2_ERR");
}
}finally{
if(conn!=null){
conn.close();
}
if(stdOut!=null)
stdOut.close();
if(stdErr!=null)
stdErr.close();
}
returnoutStr;
}
privateStringprocessStream(InputStreamin,Stringcharset)throwsIOException{
byte[]buf=newbyte[1024];
StringBuildersb=newStringBuilder();
while(in.read(buf)!=-1){
sb.append(newString(buf,charset));
}
returnsb.toString();
}
publicstaticvoidmain(String[]args){
Stringusr="root";
Stringpassword="12345";
StringserverIP="11.22.33.xx";
StringshPath="/root/ab.sh";
RmtShellExecutorexe=newRmtShellExecutor(serverIP,usr,password);
StringoutInf;
try{
outInf=exe.exec("sh"+shPath+"xn");
System.out.println("outInf="+outInf);
}catch(IOExceptione){
e.printStackTrace();
}
}
}
㈡ 新浪JAVA API返回的JSON数据里面中文乱码
这是unicode编码,不是乱码,你进行Unicode转码就出来了
给你写个方法转码,将版unicode传递进去返回字符串
publicStringconvert(StringutfString){
权StringBuildersb=newStringBuilder();
inti=-1;
intpos=0;
while((i=utfString.indexOf("\u",pos))!=-1){
sb.append(utfString.substring(pos,i));
if(i+5<utfString.length()){
pos=i+6;
sb.append((char)Integer.parseInt(utfString.substring(i+2,i+6),16));
}
}
returnsb.toString();
}
㈢ 如何解决 Java 构造 HTTP 请求 POST 的返回值是乱码
对返回结果使用适当的编码格式,比如
newInputStreamReader(urlConn.getInputStream(),"gbk");//设置编码
㈣ java输出结果乱码
这不是乱码,而是int[] y对象的内存地址值。你的y仍然是一个一维数组对象,所以才会出现这种情况。如果想要输出所有的元素的话可以这样:
for(int y[]:x){
for(int i:y){
System.out.println(i);
}
}
当然你也可以重写y数组的toString()方法,在toString里面可以定义你想要输出的格式, Object里面的toString方法默认打印出来 是类名+@+hashCode值
㈤ java 接口返回出现乱码
你弯猜可也在Web.xml里面配置一下这个埋野型
<!--解决中文乱码 -->
<filter>
<filter-name>SpringEncoding</filter-name>
<filter-class>脊迟org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpringEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--解决中文乱码 -->
㈥ java的HttpClient请求,返回的数据部分乱码,请大侠指点呀!
可以把你的这段代腔仔码简化一下
ins=method.getResponseBodyAsStream();
byte[]b=咐芦newbyte[1024];
int伍简汪r_len=0;
while((r_len=ins.read(b))>0)
{
result.append(newString(b,0,r_len,method.getResponseCharSet()));
}
替换为:
byte[]ba=method.getResponseBody();
Stringstr=newString(ba,"UTF-8"); //得到指定编码格式的字符串
这里的str就是你的返回值。这段代码我使用过,可以解决乱码问题
㈦ Java代码出现了乱码怎么办
运行java带有中文的代码就出现乱码,解决方式如下:
设置整个java工程的编码格式为utf-8,如下图:
设置html的编码格式为utf-8
㈧ java get 请求 返回值乱码
您好,提问者:
如果包含中文,不建议使用get方式,可采用post提交方式。
//可以采用加密、解码的方式进行加码提交,例如:
//加码
Stringstr=java.net.URLEncoder.encode("中国","UTF-8");
//解码
Stringjiema=java.net.URLDecoder.decode(str,"UTF-8");