導航:首頁 > 編程語言 > javalinux亂碼怎麼解決

javalinux亂碼怎麼解決

發布時間:2023-06-12 07:10:54

『壹』 使用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在linux系統下文件夾出現中文亂碼的問題

問題描述:
linux的默認字元編碼是utf-8,在linux上存的是中文名的文件,但是用java讀出來就是亂碼,全是??????然後我通過:new
String(files[i].getName().getBytes("GB2312"),"UTF-8");這樣處理一下,中文文件名全變成了?????,應該怎麼轉碼才能獲取中文?
問題答案:
Java
中的字元編碼默認是Unicode
用new
String(files[i].getName().getBytes("UTF-8"),"UTF-8");試下看對我有幫助
用utf8格式上傳,然後再用utf8格式下載就好了,但是伺服器上存的是亂碼的,遍歷出來是中文的。

『叄』 java讀取linux下文件名亂碼

Linux下讀取文件名亂碼可能的原因是:
1.linux系統默認編碼不支持中文字元

2.文件名本身是亂碼

解決方案是在讀取文件名的時候,要進行顯式的編碼轉換如下:

FileInputStreamfis=newFileInputStream("fileName");
InputStreamReaderisr=newInputStreamReader(fis,"utf-8");

『肆』 java在linux下創建文件,中文文件名為亂碼。請問這個問題是怎麼解決的,謝謝~

修改linux的編碼方式。或者不要命名中文。最好是不要命名為中文

『伍』 java web在Linux上傳輸的亂碼的求解

你本地和LINUX的編碼不一致所導致的亂碼
解決如下:
1、設置request的編碼 new String(request.getParameter("參數名").getBytes("iso-8859-1"), "gbk");
將默認的iso-8859-1轉為gbk 不行的話就多換幾種編碼
2、設置LINUX的編碼
命令行敲入:vi /etc/sysconfig/i18n 修改為以下內容
#LANG="zh_CN.UTF-8"
#SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
#SYSFONT="latarcyrheb-sun16"
#LANG="en_US.UTF-8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
export LC_ALL="zh_CN.GB18030"
建議如上 不喜勿噴

『陸』 Java代碼出現了亂碼怎麼辦

運行java帶有中文的枝燃代碼就出現亂碼,解決方式如下:辯塌

設置整個猛灶虛java工程的編碼格式為utf-8,如下圖:

設置html的編碼格式為utf-8

『柒』 通過java控制linux環境下解壓文件夾後中文文件名是亂碼

壓縮成rar格式的再試試

『捌』 如何解決 linux 的亂碼問題

出現這種情況的原因為兩種操作系統的中文壓縮方式不同,在windows環境中中文壓縮一般為gbk,而在linux環境中為utf8,這就導致了在windows下能正常顯示
txt文件在linux環境下打開呈現了亂碼狀態。
解決方法:在linux用iconv命令,輸入命令如下
iconv -f gbk -t utf8 file.pdf > file.pdf.utf8
此時會重生一file.utf8文件,打開之後就能正常顯示中文

linux系統下修改語言配置方法有:
法一:修改/etc/profile文件,增加export LANG=zh_CN.GB18030
法二:修改/etc/sysconfig/i18n文件,將
#LANG="en_US.UTF-8"
#SUPPORTED="en_US.UTF-8:en_US:en"
#SYSFONT="latarcyrheb-sun16"
改為
LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
SYSFONT="latarcyrheb-sun16"

/etc/profile: 為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.
/etc/sysconfig/i18n 這里存放的是系統的區域語言設置
LANG 表明你當前系統的語言環境變數設置 ,這里是 zh_CN.GB18030
SUPPORTED 表明系統預置了那些語言支持 ,不在項目中的語言不能正常顯示
SYSFONT 定義控制台終端字體,你文本登錄的時候顯示的字體是 latarcyrheb-sun16
I18N 是 internationalization 的縮寫形式,意即在 i 和 n 之間有 18 個字母,本意是指軟體的「國際化」.I18N支持多種語言,不過同一時間只能是英文和一種選定的語言,例如英文+中文、英文+德文、英文+韓文等等;

如果在SCRT上操作時中文亂碼,可依次點擊options--session options--appearance,選擇character encoding為UTF-8

『玖』 Java讀取linux系統中文文件名時候亂碼,並顯示文件不存在

我記得InputStreamReader和OutputStreamWriter不是可以設置編碼的嗎?
方式應該是:OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8");
InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
這樣還亂碼?那就二進制讀取就行了。
記得保證整個編譯環境編碼統一。

閱讀全文

與javalinux亂碼怎麼解決相關的資料

熱點內容
pubg用什麼伺服器 瀏覽:526
田漢pdf 瀏覽:661
記錄儀如何安裝安卓系統 瀏覽:594
python求灰度均值 瀏覽:756
c編譯器是系統軟體嗎 瀏覽:694
獲取伺服器內網地址 瀏覽:536
新手媽媽如何帶新生兒APP 瀏覽:157
java日程管理 瀏覽:376
高清視頻鏈接加密 瀏覽:407
新買的阿里雲伺服器怎麼配置 瀏覽:612
在線編譯器為什麼刷新還在 瀏覽:212
雲伺服器系統盤可以裝資料庫 瀏覽:906
php繪制圖形 瀏覽:588
支付伺服器異常怎麼辦 瀏覽:76
java撥號 瀏覽:867
er5200如何設置虛擬伺服器 瀏覽:571
網路中心伺服器叫什麼 瀏覽:459
isplay單片機下載器 瀏覽:481
怎麼查看伺服器地址和埠 瀏覽:187
加密朋克ai 瀏覽:157