本文目錄一覽:
- 1、Java 修改編碼格式的幾種方式
- 2、java程序改變文件編碼方式
- 3、myeclipse 如何更改java文件的編碼方式
- 4、請問java如何改變字元串的編碼方式
- 5、java怎樣設置txt文件的編碼格式
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-tw/n/219752.html