Linux下读取文件名乱码可能的原因是:
1.linux系统默认编码不支持中文字符
2.文件名本身是乱码
解决方案是在读取文件名的时候,要进行显式的编码转换如下:
FileInputStreamfis=newFileInputStream("fileName");
InputStreamReaderisr=newInputStreamReader(fis,"utf-8");
② java在linux下创建文件,中文文件名为乱码
JBoss4.0.5使用的是tomcat5,而tomcat的默认字符集是ISO-8859-1.找到JBoss的根目录下名 为\%JBoss4.0.5%server\default\deploy\jbossweb-tomcat55.sar的文件夹.
修改server.xml文件.
修改方法,找到<Connector port="8080"
......>默认是8080端口,在后面加入URIEcoding='UTF-8',字符集根据页面进行相应的设置,我的整个项目是使用UTF-
8字符集(包括UTF-8).
<Connector port="8080" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
zip包是在windows环境下打的压缩包,通过java控制在linux环境下解压之后,解压出来的文件和文件夹中的中文文件名是乱码,请问应如何解决
③ java在linux下创建文件,中文文件名为乱码。请问这个问题是怎么解决的,谢谢~
修改linux的编码方式。或者不要命名中文。最好是不要命名为中文
④ 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,执行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 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 乱码恢复
右键点击乱码文件,选preferenses,看看resource里的编码是不是正确,如果不是utf-8就改成utf-8,如果是utf-8的话你改成别的编码试试看看,然后把正常状态下的内容复制出来,在把文件改成utf-8后把文件复制进去
⑧ 请教java写入文件乱码问题,上传文件将文件写入到linux路径下的时候出现乱码怎么解决,急~~谢谢
乱码肯定是乱用编码造成的,我的建议是上传之前统一编码,到linux再用同样的编码解码
⑨ 我在linux系统下,执行java -cp 命令 出现了乱码 我该肿么办
你拿远程工具链接,比如putty,securessh,然后在选项里面改成UTF8就可以了。
⑩ JDK Linux中文乱码问题
按jhuangjiahua的方法java应用程序的乱码问题可以解决。<br /><br /><br />标题: <span style="font-weight: bold;">再提 Ubuntu/Debian 下 JAVA 中文显示</span>
常见的字符转换方法
将Form 中 的 值 传 送 到 数 据 库 中 再 取 出 来 后 全 变 成 了“?”。Form用POST提交数据,代码中使用了语句:String st=new(request.getParameter(“name”).getBytes(“ISO8859_1”)), 而且也声明了charset=gb2312。
要处理Form中传递的中文参数,应该在JSP中加入下面的代码,另外定义一个专门解决这个问题的getStr类,然后对接收到的参数进行转换:
String keyword1=request.getParameter(“keyword1”);
keyword1=getStr(keyword1);
这样就可以解决问题了,代码如下:
<%@ page contentType=“text/html;charset=gb2312”%>
<%!
public String getStr(String str){
try{String temp_p=str;
byte[] temp_t=temp_p.getBytes(“ISO8859-1”);
String temp=new String(temp_t);
return temp;
}
catch(Exception e){ }
return “NULL”;
}
%>
<%--http://www.cndes.com测试--%>
<% String keyword=“创联网络技术中心欢迎您的到来”;
String keyword1=request.getParameter(“keyword1”);
keyword1=getStr(keyword1);
out.print(keyword);
out.print(keyword1);
%>
2. JDBC Driver的字符转换
目前大多数JDBC Driver采用本地编码格式来传输中文字符,例如中文字符“0x4175”会被转成“0x41”和“0x75”进行传输。因此需要对JDBC Driver返回的字符以及要发给JDBC Driver的字符进行转换。当用JDBC Driver向数据库中插入数据时,需要先将Unicode转成Native code; 当 JDBC Driver从数据库中查询数据时,则需要将Native code转换成Unicode。下面给出了这两种转换的实现:
String native2Unicode(String s) {
if (s == null || s.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {
c = s.charAt(i);
byte []buf = (“”+c).getBytes();
buffer[j++] = (char)buf[0];
buffer[j++] = (char)buf[1];
}
else {buffer[j++] = s.ch
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=377091