首页 > 编程知识 正文

java程序改变文件编码方式,java写入文件时如何设置编码

时间:2023-12-29 20:31:40 阅读:330494 作者:YNPC

本文目录一览:

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[] b = new byte[1024];

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程序改变文件编码方式

package test;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

public class ConvertCharset

{

/**

 * @param path the file path or directory

 * @param back the backup file path or directory 

 * @param cs1 the orignle charset name

 * @param cs2 the dest charset to convert

 */

public static void convertCharset ( String path, String back, String cs1, String cs2 )

{

try

{

String separator = System.getProperty ("line.separator");

File dir = new File (path);

// a directory, not a file

if (dir.isDirectory ())

{

File[] files = dir.listFiles ();

for ( int i = 0; i  files.length; i++ )

{

File dirt = files[i];

String fn = dirt.getName ();

String name = path + File.separator + fn;

// recursion

if (dirt.isDirectory ())

{

convertCharset (name, back + File.separator + fn, cs1, cs2);

}

else 

{

// write

File dest = new File(back);

if (!dest.exists ())

{

dest.mkdirs ();

}

FileOutputStream fos = new FileOutputStream (back + File.separator + fn);

OutputStreamWriter osw = new OutputStreamWriter (fos, cs2);

BufferedWriter bw = new BufferedWriter (osw);

// read

FileInputStream fis = new FileInputStream (name);

InputStreamReader isr = new InputStreamReader (fis, cs1);

BufferedReader br = new BufferedReader (isr);

String line = null;

while (null != ( line = br.readLine () ))

{

bw.write (line + separator);

}

// write

fos.flush ();

osw.flush ();

bw.flush ();

bw.close ();

osw.close ();

fos.close ();

// read

br.close ();

isr.close ();

fis.close ();

}

}

}

// a single file

else

{

// write

File dest = new File(back);

if (!dest.exists ())

{

dest.mkdir ();

}

FileOutputStream fos = new FileOutputStream (back + File.separator + dir.getName ());

OutputStreamWriter osw = new OutputStreamWriter (fos, cs2);

BufferedWriter bw = new BufferedWriter (osw);

// read

FileInputStream fis = new FileInputStream (path);

InputStreamReader isr = new InputStreamReader (fis, cs1);

BufferedReader br = new BufferedReader (isr);

String line = null;

while (null != ( line = br.readLine () ))

{

bw.write (line + separator);

}

// write

fos.flush ();

osw.flush ();

bw.flush ();

bw.close ();

osw.close ();

fos.close ();

// read

br.close ();

isr.close ();

fis.close ();

}

System.out.println ("Convert Success !");

}

catch (Exception e)

{

e.printStackTrace ();

}

}

public static void main ( String[] args )

{

// a single file

convertCharset ("I:\2013313workspace\Yaojiangji\src\yaojiangji\paixu.java", 

  "I:\2013313workspace\Yaojiangji\back", 

  "GBK", 

  "UTF-8");

// not a file , it's a directory

// convertCharset ("I:\2013313workspace\Yaojiangji\src\yaojiangji", 

//   "I:\2013313workspace\Yaojiangji\back\yaojiangji", 

//   "GBK", 

//   "UTF-8");

}

}

myeclipse 如何更改java文件的编码方式

打开电脑myeclipse,进入主界面点击上方菜单栏处[windows]选项

在弹出的菜单栏中选择[preferences]选项

进入prefenence选项界面,点击打开[general]

在general菜单栏中,点击选中[content types],在右方可以看到文件类型

一般的我们要修改文件类型编码格式,可以点击打开[text],在下方的文件类型中选择需要修改的文件

比如小编要修个jsp文件的编码格式,可以选择jsp,在下方选项中也选择jsp文件

选择完毕文件类型,在下方的encoding选项后改为我们需要修改的编码格式比如utf-8,然后点击[update],点击OK

请问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怎样设置txt文件的编码格式

可以使用流来修改!百

如:

String path ="C......"

File file = new File(path);

Writer outTxt = new OutputStreamWriter(new FileOutputStream(file,true), "UTF-8");

outTxt.write("文件内度容格式不正知确, 此文件已被系统删除!道 ");

outTxt.close();注意:记版事本只支持ANSI、权Unicode、Unicode

big

endian、UTF-8四种编码格式。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。