mysql數(shù)據(jù)庫有一字段里的數(shù)據(jù)含有 "和渔呵,,見下圖:
在生成csv文件時(shí),會被分割為:
導(dǎo)致數(shù)據(jù)錯(cuò)位砍鸠。
解決思想:
某字符含有逗號時(shí)扩氢,將該字符用雙引號引起來,那么字符里的逗號將不會被解析爷辱;
含有雙引號時(shí)录豺,可替換為兩個(gè)雙引號朦肘。
部分代碼如下:
String handleStr=str;
//先判斷字符里是否含有逗號
if(str.contains(",")){
//如果還有雙引號,先將雙引號轉(zhuǎn)義双饥,避免兩邊加了雙引號后轉(zhuǎn)義錯(cuò)誤
if(str.contains("\"")){
handleStr=str.replace("\"", "\"\"");
}
//將逗號轉(zhuǎn)義
handleStr="\""+handleStr+"\"";
}
此時(shí)媒抠,導(dǎo)出為csv文件不會出現(xiàn)錯(cuò)位問題。如下:
在讀取一行中的各個(gè)數(shù)據(jù)時(shí)咏花,每讀取一個(gè)需加逗號趴生。
String rowStr = sb.append(handleStr).append(",").toString();
基本解決了我遇到的問題。