篇首语:本文由小编为大家整理,主要介绍了如何解决GBK转换UTF-8乱码问题相关的知识,希望对你有一定的参考价值。
一直以来都是在用wordpress搭建网站,前段时间想利用dedecms这类程序来搭建一个在线问答平台,模板装上去进行了一些简单的测试,发现了一些bug,就是提问的页面出现乱码,找了很久才知道原因。原因是这个问答模板的提问页面采用的是gbk编码,而这个系统的编码是utf8。最近遇到这样一个问题,我上传文件没有转换字符集windows默认GBK,结果当我需要读文件显示时用UTF-8转当然会出现乱码,为了解决这个问题,我就将上传时文件一同也转成UTF-8了这样就不会乱码了,上传时转换字符集方法如下:
String root = filePath;// 上传路径File rootFile = new File(root);// 路径不存在先创建路径if (!rootFile.exists()) {rootFile.mkdirs();}// 获取后缀typeString suffix = domain.getSuffixName();// 新文件名String strNewName = domain.getScriptName().trim() + domain.getVersionName().trim() + "."+ suffix;domain.setScriptUrl("/" + strNewName);File destFile;String destFilePath=root+"/"+strNewName;destFile = new File(root, strNewName);OutputStream outputStream;outputStream = new FileOutputStream(destFile);// file是上传过来的文件,存放为临时tmpFile file = domain.getFile();String context = "";InputStreamReader isr;isr = new InputStreamReader(new FileInputStream(file), "GBK");BufferedReader br = new BufferedReader(isr);String line;while ((line = br.readLine()) != null) {context += line + "\r\n";System.out.println(line);}br.close();byte[] content = context.getBytes();context = new String(content, "UTF-8");BufferedWriter writer;FileOutputStream fos = new FileOutputStream(destFilePath, true);System.out.println(root+"/"+strNewName);writer = new BufferedWriter(new OutputStreamWriter(fos, "UTF-8"));writer.append(context);writer.close();
以上是关于如何解决GBK转换UTF-8乱码问题的主要内容,如果未能解决你的问题,请参考以下文章