java程序改變文件編碼方式,java寫入文件時如何設置編碼

本文目錄一覽:

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四種編碼格式。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/219752.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-09 11:00
下一篇 2024-12-09 11:00

相關推薦

發表回復

登錄後才能評論