我对如何将中文字符写入jexcel有疑问。
这是我的代码..
nameChinese取自mysql数据库..
public String getNameChinese(String nameChinese)
{
String strNameChinese = "";
try
{
strNameChinese = new String(nameChinese.getBytes("utf-8"), "iso-8859-1");
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
return strNameChinese;
}
}// getNameChinese()
Excel.java
Workbook workbook = Workbook.getWorkbook(new File(templatePath));
WritableWorkbook copy = Workbook.createWorkbook(new File(resultPath + resultFileName), workbook);
WritableSheet sheet = copy.getSheet(0);
Label nameLabel = new Label(1, currentIndex, getNameChinese(), normalAllSideWarpFormat);
sheet.addCell(nameLabel);
copy.write();
copy.close();
答案 0 :(得分:0)
我对jExcelAPI了解不多,但我怀疑你问题的一部分是你对字符串的处理......
Java中的String具有UTF-16的内部表示。您在getNameChinese方法中进行的转换会破坏US-ASCII之外的任何字符的显示。 (和汉字是!)。
我将介绍您的代码,以便我可以说明这个问题。与此同时,为了论证,我假设nameChinese正在从MySQL数据库中正确存储和检索。 (但这是字符编码问题的另一个非常简单的来源)。
nameChinese.getBytes("UTF-8")
生成一个3字节0xE6,0xB1,0x89
如果将从数据库中检索到的字符串直接放入jExcelAPI,会发生什么?