servlet用的是直接存:item.write(new File(fileName))
然后调用方法复制一个编码为utf-8的文件
读item存入的文件内容
File file = new File(PATH)
String data = null
StringBuffer sbContent = new StringBuffer()
if (file.exists()){
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(“文件路径”), System.getProperty("file.encoding")))
while ((data = br.readLine()) != null) {
sbContent.append(data)
sbContent.append("\r\n")
}
}
把读出的内容重新写入到utf-8的编码的txt文件中
FileOutputStream fos = null
OutputStreamWriter osw = null
try {
System.out.println("------------------------"+sbContent.toString()+"----------------------------")
fos = new FileOutputStream("与上文文件路径一样")
osw = new OutputStreamWriter(fos, System.getProperty("file.encoding"))
osw.write(sbContent.toString())
} catch (Exception e) {
e.printStackTrace()
}finally{
close()
}
在Linux里打印出来的sbContent.toString()都是乱码
肯定是编码问题咯。你上传的程序和服务器文档打开的编码不同。这些供应商客服都应该知道。 我有问题都是问他们。我服务器是在时代互联买的。
乱码的本质原因是servlet打出来的字符的编码与你浏览器自动选择的编码不一致,默认情况下用户的浏览器的编码是“自动选择”的。所以对于乱码的问题,首先要搞清楚servlet里面的string是用什么编码print给浏览器的,明确了这一点,就应该setcontenttype("text/htmlcharset=你的编码"),来告诉浏览器,如果是html,最好在meta里面指定,浏览器更优先看meta
解决办法:1.修改客户端软件,将所有文件名、文件夹名都转换为utf-8格式。
这个可能需要编程,处理一下即可。(我有ftp递归上传整个目录的代码,支持中文)
2.修改服务器配置:
serv-u 8.0设置如下:
解决方法如下:打开SERV-U---导航---限制和设置---FTP设置---找到OPTS UTF8 命令----编辑----选择禁用命令---然后确认---再选择全局属性-----高级选项---找到“对所有已收发的路径和文件名使用UTF-8编码”,把前面的勾去掉,确认。最后回到导航,用同样的方法设置“服务器限制和设置”,保存退出,就完成啦。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)