我想将缅甸文写入.csv
文件。将缅甸语文本写入.csv
文件后,我用MS Office
打开该文件,但它没有显示缅甸语文本。
在我的电脑中设置了缅甸字体。
以下是我的代码:
OutputStreamWriter char_output = new OutputStreamWriter(new
FileOutputStream(CSV.getAbsolutePath().toString()),
Charset.forName("UTF-8").newEncoder());
char_output.write(message + str);
char_output.write("\n");
for (int i = 0; i < pList.size(); i++)
{
StringBuilder sb = new StringBuilder();
sb.append(pList.get(i).getOrderNumber()).append(",").append(pList.get(i).getProductName()).append(",");
sb.append(pList.get(i).getProductDiscription()).append(",").append(pList.get(i).getWeightKg()).append(",");
sb.append(pList.get(i).getWeightViss()).append(",").append(pList.get(i).getQty()).append(",");
sb.append(pList.get(i).getDate()).append("\n");
char_output.write(sb.toString())`FileOutputStream(CSV.getAbsolutePath().toString() ),
}
char_output.close();
答案 0 :(得分:0)
许多人会说,使用CSV库。
使用Charset.forName("UTF-8").newEncoder()
代替"UTF-8"
,但不是错误。
而不是Windows下的“\ n”“\ r \ n”可能更方便。 (System.getProperty("file.encoding")
会使用Android的“\ n”。)
您需要处理逗号和引号。如果字符串值包含逗号,则它应该带有双引号。每个内部双引号都是自我逃脱的,加倍。
使用分号代替逗号。更好的是标签字符"\t"
。
要检测UTF-8,您可以在文件开头写一个BOM字符。这是零宽度空间。 BOM =字节顺序标记,参考UTF-16LE和UTF-16BE(反向字节对)。
sb.append("\uFEFF"); // Add a BOM at the begin of file.
文件结尾可能是“.csv”,但你也可能撒谎,并给它一个结尾“.xls”让Excel通过双击打开它。