csv文件亂碼


問題描述:
生成的csv文件,設置為UTF-8格式,在windows上用EXCEL打開的話會亂碼,在linux上用vim或者cat打開查看正常;設置為GBK格式的話,在windows上用EXCEL打開正常,但在linux上亂碼
 
解決方法:
在csv文件頭部的最前面加bom
 
BOM(Byte Order Mark) ,是 UTF編碼方案里用於標識編碼的標准標記,在 UTF-16里本來是 FF FE,變成 UTF-8就成了 EF BB BF。這個標記是可選的,因為 UTF8字節沒有順序,所以它可以被用來檢測一個字節流是否是 UTF-8編碼的。微軟做這種檢測,但有些軟件不做這種檢測,而把它當作正常字符處理。
 
代碼如下:
File file = new File( ospFileName );
OutputStream stream = new FileOutputStream( file );
stream .write( new byte [] { ( byte ) 0xEF, ( byte ) 0xBB, ( byte ) 0xBF });
CsvWriter ospWriter = new CsvWriter( stream , ',' , Charset.forName( "UTF-8" ));
String[] ospHead = new String[]{ "No" , "Comment" , "server" , "method" , "param-exp" , "response" , "trace-id" };
ospWriter .writeRecord( ospHead );
 
這樣的話,在windows上用EXCEL打開就不會是亂碼,linux上也顯示正常;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM