如何解决GBK转换UTF-8乱码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决GBK转换UTF-8乱码问题相关的知识,希望对你有一定的参考价值。

一直以来都是在用wordpress搭建网站,前段时间想利用dedecms这类程序来搭建一个在线问答平台,模板装上去进行了一些简单的测试,发现了一些bug,就是提问的页面出现乱码,找了很久才知道原因。原因是这个问答模板的提问页面采用的是gbk编码,而这个系统的编码是utf8。
原因其实和之前《WordPress主题乱码》这篇文章提到的原因一样,都是因为保存编码格式出错导致。找到了出现了问题的原因,下一步就着手修改编码,把这个网页的编码由gbk转换utf8。
本来想找一个在线gbk转utf8工具,进行在线实现gbk和utf8格式互转,但是找了很久都没有找到满意的工具,于是本着自己动手丰衣足食的原则,利用Dreamweaver这款功能强大的网页编辑器进行修改,其实操作很简单,步骤如下:
一、模板文件转换
(1)用DW打开模板文件,选择 修改——页面属性——标题/编码
(2)我们只要将编码选择为UTF-8即可,下面还有一个选择就是:是否包含Unicode签名(BOM),选择不带bom的格式保存。
(3)若发现有的文字出现了乱码自己手动更改为对应的中文,从而将全部的模板文章转换为UTF-8格式!
二、数据库文件转换
(1)首先备份数据库文件,以免出现文件丢失
(2)打开phpMyAdmin找到要编辑的数据库文件,导出到本地。
(3)将导出的.sql文件利用Notepad++或者DW打开进行本地编辑,查找到CHARSET=gbk并全部替换为CHARSET=utf8即可。
评论
参考技术A :getBytes 的功能是将字符转换成字节数组, gbk.getBytes("GB2312") 用GB2312翻译成字节数组, new String(gbk.getBytes("GB2312"),"UTF-8"); 把用GB2312翻译成字节数组,再用UTF-8翻译成字符串。 兄弟你想下,这里有没有问题? 这就是乱码的原因...本回答被提问者和网友采纳

上传文件乱码,GBK转UTF-8

最近遇到这样一个问题,我上传文件没有转换字符集windows默认GBK,结果当我需要读文件显示时用UTF-8转当然会出现乱码,为了解决这个问题,我就将上传时文件一同也转成UTF-8了这样就不会乱码了,上传时转换字符集方法如下:

String root = filePath;// 上传路径
File rootFile = new File(root);
// 路径不存在先创建路径
if (!rootFile.exists()) {
rootFile.mkdirs();
}
// 获取后缀type
String 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是上传过来的文件,存放为临时tmp
File 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乱码问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

理解并解决GBK转UTF-8奇数中文乱码(转)

上传文件乱码,GBK转UTF-8

解决Linux文档显示中文乱码问题以及编码转换

convmv 解决GBK 迁移到 UTF-8 ,中文 文件名乱码

Java:文件转换流(解决编码问题,防止出现乱码)