java怎么转换编码(java 怎么gbk转码utf-8)

本文目录
java 怎么gbk转码utf-8
方法一:
思路:先转为Unicode,然后转为GBK
String utf8 = new String(t.getBytes( "UTF-8"));
System.out.println(utf8);
String unicode = new String(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
String gbk = new String(unicode.getBytes("GBK"));
System.out.println(gbk);
方法二:
public static void main(String args) {
String str="字符串编码转换";
try {
byte temp=str.getBytes("utf-8");//这里写原编码方式
byte newtemp=new String(temp,"utf-8").getBytes("gbk");//这里写转换后的编码方式
String newStr=new String(newtemp,"gbk");//这里写转换后的编码方式
System.out.println(newStr);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
请问java如何改变字符串的编码方式
byte b=string.getBytes("GB2312");//使用GB2312编码方式对字符串string进行编码
//这时要想将字节数组b的内容正确解码只能使用GB2312的编码方式进行解码,即
String str=new String(b,"GB2312");//这里若使用UTF-8编码方式来进行解码就会乱码
//将eclipse默认的编码方式改为UTF-8,只是用该编码方式对.java源文件进行编码保存
//这个对new String(string.getBytes("GB2312"),"UTF-8")没啥影响的
//因为从java源文件获取字符串string时,已经通过UTF-8编码方式进行解码了
//而string.getBytes("GB2312")是使用指定的编码方式对字符串string进行从新编码
//这两者之间没啥关系的
Java 修改编码格式的几种方式
主要分response的字节字符输出流和request接受中文参数doGet(),doPost()的设置四种.以及从服务器下载文件到浏览器的编码问题.
都是我学习java时总结的,希望能帮到你.
response的字节输出流:
// 设置浏览器默认打开的时候采用的字符集编码
response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 设置中文转成字节数组的时候取出的编码
response.getOutputStream().write("如果不设置编码,这里就是乱码".getBytes("UTF-8"));
response的字符输出流:
//设置浏览器默认打开的时候采用的字符集编码,response的字符流的缓冲区的编码.
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("中文");
request的doGet()编码解决:
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("GET方式:"+name);
request的doPost()编码解决:
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
System.out.println("POST方式:"+name);
下载文件时浏览器编码问题:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.接收参数
String filename = new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(filename);
// 2.完成文件下载:
// 2.1设置Content-Type头(获取文件的mime类型)
String type = this.getServletContext().getMimeType(filename);
//设置文件的mime类型
response.setHeader("Content-Type", type);
// 2.3web项目文件的绝对路径
String realPath = this.getServletContext().getRealPath("/download/"+filename);
// 获得浏览器的类型处理中文文件的乱码问题.(User-Agent:服务器收到客户端版本之类的一些信息)
String agent = request.getHeader("User-Agent");
System.out.println(agent);
if(agent.contains("Firefox")){
filename = base64EncodeFileName(filename);
}else{
//IE谷歌编码
filename = URLEncoder.encode(filename,"UTF-8");
}
// 2.2设置Content-Disposition头(固定写法,让浏览器必须下载,不能直接打开)
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//获得文件
InputStream is = new FileInputStream(realPath);
// 获得response指定的方法获取输出流:如果用其他流是直接拷贝而不是下载
OutputStream os = response.getOutputStream();
int len = 0;
byte;
while((len = is.read(b))!= -1){
os.write(b, 0, len);
}
//响应流可以不关,在服务器做出相应后服务器会自动把response获得的流关闭
is.close();
}
//火狐
public static String base64EncodeFileName(String fileName) {
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
return "=?UTF-8?B?"
+ new String(base64Encoder.encode(fileName
.getBytes("UTF-8"))) + "?=";
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
java怎么把utf-8的字符串转换为gb2312格式
Java中字符串转码,根据实际运用的环境有以下三种方式
1、使用Java.lang.String
这是最常用的方法,先用对应编码获取字节,然后重新构造新编码,示例代码如下:
String s = "清山";
byte b = s.getBytes("utf-8");//编码
String sa = new String(b, "gb2312");//解码:用什么字符集编码就用什么字符集解码
2、java.io.InputStreamReader/OutputStreamWriter:桥转换
读写文件的应用中,可以使用这种方式,直接在IO流构造中转换,示例代码如下:
InputStream is = new FileInputStream("C:/项目进度跟踪.txt");//文件读取
InputStreamReader isr = new InputStreamReader(is, "utf-8");//解码
OutputStream os = new FileOutputStream("C:/项目进度跟踪_gb2312.txt");//文件输出
OutputStreamWriter osw = new OutputStreamWriter(os, "gb2312");//开始编码
3、java.nio.Charset
使用nio中的Charset转换字符,示例代码如下:
Charset inSet = Charset.forName("utf-8"); // 解码字符集
Charset outSet = Charset.forName("gb2312"); // 编码字符集
CharsetDecoder de = inSet.newDecoder(); // 解码器
CharsetEncoder en = outSet.newEncoder();// 编码

更多文章:
ajax提交form表单数据到servlet(HTML与Servlet的连接)
2025年12月7日 10:30
批量转换ascii(如何把txt 批量从utf8转换为ascii,最好有工具)
2025年11月18日 04:30
postgresql 创建用户(postgresql如何用新创建的用户登录呢)
2026年1月28日 16:30
工程师一个月能赚多少钱(造价工程师一般月收入是多少 需求量大吗)
2026年7月4日 11:00
delphi led扩展屏显示开发(用DELPHI模拟LED屏下的那种文字特效怎么做)
2025年12月17日 14:30
download是什么意思可以删除吗(Download什么意思,Download的文件夹能删了吗,)
2026年7月27日 03:15
trousers后面单复数(The+trousers用不用三单)
2026年5月7日 03:00
linux是自由软件吗(Linux是自由软件,什么是自由软件,它包含哪些含义)
2026年4月14日 08:15
springmvc答辩问题(我的毕业设计是JSP+mysql+Tomcat搭建的一个管理系统,答辩老师问我是怎么设计的,我应该)
2025年11月16日 05:00














