文件上传乱码

文件上传乱码,第1张

用的是fileupload上传,在windows下上传是正常的,把项目部署到linux上就成乱码了,编码什么的都是用的linux编码

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/html

charset=你的编码"),来告诉浏览器,如果是html,最好在meta里面指定,浏览器更优先看meta

ftp服务目录下的文件出现乱码,多数是因为中文编码不统一导致的,多见于第三方的ftp服务软件,比如server-u,另外跨平台访问也会出现这种情况,比如通过Linux访问windows上的ftp服务器。解决的方法可以参考如下解决方法。

1、ftp服务目录下的文件,统一使用英文名称 ,不要使用中文名称。

2、设置好编码,以server-u为例说明:

1)、打开Serv-U控制台,点击“限制和设置”--“为域配置高级FTP命令设置和行为”。

2)、在FTP设置中找到OPTS UTF8命令,右击禁用此命令。

3)、点击下面的“全局属性”。

4)、在出来的FTP命令属性选项卡中,“高级选项”里,把“对所有收发的路径和文件名使用UFT-8编码”前面的钩去掉!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8070229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存