0

我想将缅甸文本写入.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();
4

1 回答 1

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 通过双击打开它。

于 2013-07-18T08:04:03.890 回答