導航:首頁 > 文件教程 > java文件名亂碼

java文件名亂碼

發布時間:2024-11-29 12:29:11

1. java生成文件名亂碼怎麼解決

輸出抄excel:
response.setHeader("Content-disposition","attachment;filename*=utf-8'zh_cn'"
+URLEncoder.encode('文件名襲',"UTF-8")+".xls");//設定輸出文件頭
response.setContentType("application/ms-excel");//定義輸出類型

2. 通過java控制linux環境下解壓文件夾後中文文件名是亂碼

將linux當前環境設置為中文環境即可。
修改/etc/sysconfig/i18n 文件
LANG="zh_CN.GB2312"

3. 在linux下編輯的的java文件在window下顯示亂碼亂碼

linux一般用UTF8編碼的。WINDOWS是用gbk的。所以有漢字的時候會亂碼,沒漢字的時候換行也會出問題。你可以用一些高級點的文本編輯器或者使用IDE,比如說你用JCreator打開就可以了。

補充:你用什麼IDE的滑游?如果你直接從命令行編譯的,可以帆耐通過態讓春javac的參數來指定字元集,即javac -encoding utf8 文件名。

4. java程序讀取properties配置文件出現中文亂碼

你的properties文件編譯過了嗎?凡是有非西歐的字元都應該事先編譯的,具體方法如下:
比如你有一個1.properties文件(含有非西歐字元),你可以在cmd窗口中切換到1.properties文件所在目錄,然後輸入native2ascii -reverse -encoding gb2312 1.properties ActionName_zh_CN.properties

1.properties為轉換之前的文件名 ActionName_zh_CN.properties為轉換之後的文件名,其中-encoding後面的gb2312是可以變的如 utf-8等

5. java打開excel亂碼

HSSFWorkbook workbook = new HSSFWorkbook();//創建EXCEL文件

HSSFSheet sheet= workbook.createSheet(sheetName); //創建工作表

這樣在用英文名作為工作表名是沒問題的,但如果sheetName是中文字元,就會出現亂碼,解決的方法如下代碼

HSSFSheet sheet= workbook.createSheet();

workbook.setSheetName(0, sheetName,(short)1); //這里(short)1是解決中文亂碼的關鍵;而第一個參數是工作表的索引號。

沒有太多原因,POI就是如此;再說導出的EXCEL文件名的中文亂碼問題, 導出時代碼如下:

.....

this.getResponse().reset();
this.getResponse().setContentType("application/msexcel");
this.getResponse().setHeader("Content-Disposition", "inline;filename=中文名.xls");
try {
em.getExcelMutliIO(this.getResponse().getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

這個時候導出去時,文件名會為亂碼,解決的辦法如下,在你的代碼增加下列函數:

public static String toUtf8String (String s){
StringBuffer sb = new StringBuffer();
for (int i=0;i<s.length();i++){
char c = s.charAt(i);
if (c >= 0 && c <= 255){sb.append(c);}
else{
byte[] b;
try { b = Character.toString(c).getBytes("utf-8");}
catch (Exception ex) {
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++) {
int k = b[j];
if (k < 0) k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}

然後在導出時,對文件名引用該函數,代碼如下:

this.getResponse().setHeader("Content-Disposition", "inline;filename=" +toUtf8String("中文文件名.xls"));

6. java在linux下遍歷文件夾,文件名中文亂碼的問題

Java 中的字元編碼默認是Unicode
用new String(files[i].getName().getBytes("UTF-8"),"UTF-8");試下看

7. java https請求 中文亂碼問題

嘗試的方法:
1. 在服務端接收到參數時,utf-8轉gbk,無效。
2. 在服務端接收到參數時,iso-8859-1轉gbk,無效。
3. 在發送請求前將中文參數轉碼,utf-8轉iso-8859-1,無效。代碼如下:
new String(remark.getBytes(「UTF-8」), 「ISO-8859-1」)
4. 在請求端,HttpHeader設定ContentType為「application/json;UTF-8」,無效。代碼如下:
headers.setContentType(Media.valueOf(「application/json;UTF-8」));
寫到這里,有人應該感覺到這有點「病急亂投醫」的感覺了,沒有頭緒地在試著各種方式。是的,起初我覺得是請求header中採用了ISO-8859-1的編碼,但嘗試後很顯然不是;後來我覺著是否是RestTemplate中採用的HttpMessageConverter方式所決定的,但沒能找到很好的證明方式,查資料說的是StringHttpMessageConverter默認採用的是ISO-8859-1編碼,可我覺得我指定了ContentType為application/json,RestTemplate不應該去調用StringHttpMessageConverter啊,其中的原理還有待深究。個人感覺這種情況出問題的可能性最大。
最後,在網上看到一篇文章後,看了一種建議方式,並且是可行的,就是使用URLEncode,將中文參數在傳參前進行encode.這里以GBK編碼是為了在伺服器端接收參數後無需再轉碼了,如下:
list.add(URLEncode.encode(name, 「GBK」));
URLEncode方式可以解決這種特定場景的中文亂碼問題,相信理解其原理後還可以運用到更多的場景。目前我在網上看到的,關於用URLEncode處理中文亂碼最多的場景就是文件下載時中文文件名亂碼。

閱讀全文

與java文件名亂碼相關的資料

熱點內容
電腦怎麼向魅族mx4傳輸文件 瀏覽:534
多少條數據的表屬於大表 瀏覽:348
三星s7edge懸浮窗教程 瀏覽:523
網監半小時可傳多少數據 瀏覽:871
求隱藏手機文件的軟體 瀏覽:487
網站下載東西怎麼選儲存位置 瀏覽:999
java時間相差多少年 瀏覽:623
什麼是移動網路指標提升 瀏覽:190
打馬是什麼意思網路用語 瀏覽:764
葯膳app 瀏覽:545
c中js間隔符號是 瀏覽:143
什麼app可以內放音樂 瀏覽:621
js執行文件 瀏覽:343
微信公眾號注銷方法 瀏覽:743
app賣酒有哪些平台 瀏覽:731
java部分中文亂碼 瀏覽:228
iis添加dll文件 瀏覽:578
appleld的代碼是什麼形式 瀏覽:659
圖片轉word文件保存在哪 瀏覽:757
count是哪個編程語言 瀏覽:85

友情鏈接