2010-11-30 59 views
1

我有一個簡單JSP下載包含日文字符的csv文件。下載的文件在中正確打開,記事本++並顯示正確的字符,但是當我嘗試打開Excel 2007中的相同文件時,它顯示了一些不同的字符,可能是其他編碼。日文字符在Excel 2007中無法正常打開的CSV文件

我的JSP看起來像這樣。

<%@ page language="java" contentType="text/csv; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ page import="java.io.*"%> 
<% 
    response.setCharacterEncoding("UTF-8"); 
    response.setContentType("text/csv; charset=UTF-8"); 
    response.addHeader("Content-Disposition", "attachment; filename= " + "Test.csv"); 
    OutputStream output = response.getOutputStream(); 
    System.out.println("Chaaracter encoding : " + response.getCharacterEncoding()); 
    Writer writer = new BufferedWriter(new OutputStreamWriter(output,"UTF-8")); 

    String japanese = "注目のキーワード"; 
    InputStream in = new ByteArrayInputStream(japanese.getBytes("UTF-8")); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));     
    String line = null;     
    while ((line = reader.readLine()) != null) { 
     writer.write(line); 
     writer.write(System.getProperty("line.separator")); 
    }   
    reader.close(); 
    writer.flush(); 
    writer.close(); 
%> 

此字符串在Excel 2007中看起來是這樣的:注ç>®ã®ã,ーワード

可以在任何一個請幫我在這裏。當用戶點擊下載鏈接(上面的jsp)時,用戶應該能夠直接在Excel中打開文件。

任何幫助,將不勝感激。

感謝 Jitendra

+0

[在java和csv文件中設置UTF-8]的副本(http://stackoverflow.com/questions/4192186/setting-a-utf-8-in-java-and-csv-file) – BalusC 2010-11-30 12:49:33

回答

2

我已經回答了類似的問題。請在這裏閱讀:setting a UTF-8 in java and csv file。一般來說,問題可以通過在文件的開頭添加「魔術」代碼(稱爲字節順序標記)來解決。

+1

請稱它爲「Byte Order Mark」:)這不是什麼魔術。 – BalusC 2010-11-30 12:50:13