在Mac上,默认文本编码为utf-8,Windows中的默认文本编码为gbk。在这种情况下,当您在Windows下提取由Mac打包的文件时,将出现乱码。
可以使用BetterZip软件在Mac上进行压缩。使用此软件进行压缩可有效防止Mac的压缩文件在Windows中出现乱码。
扩展资料:
乱码的类型:
1,文字乱码:Windows系统显示乱码,如:菜单,桌面,提示框等。这是由注册表中的字体部分设置不当引起的。
2,文件乱码:当可执行文件最初显示中文时,它是难以辨认的。这是由英文动态链接库覆盖的软件中使用的中文动态链接库引起的。
3,网页乱码:是港澳传统的中国五大代码(BIG5)和大陆简体中文(GB2312)不常见的原因。
避免乱码的措施:
1.使用统一代码。您可以选择在开发期间使用统一代码进行开发。例如,选择“UTF-8”作为默认编码。
2.使用SetCharacterEncodingFilte。基于Servlet,它可以有效地避免乱码问题。它对POST有效,对GET无效。
3.使用统一的开发环境。使用统一的开发环境可以避免许多人在共同开发项目时出现的乱码问题。
参考资料:百度百科-乱码
用的是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()都是乱码
肯定是编码问题咯。你上传的程序和服务器文档打开的编码不同。这些供应商客服都应该知道。 我有问题都是问他们。我服务器是在时代互联买的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)