2012-02-17 7 views
0

jexcelに中国語を書く方法に問題があります。ここjexcelapiに中国語を書く

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

私ははJExcelAPIについて多くを知っているが、私はありませんあなたの問題の疑いのある部分は、あなたの文字列の処理です...

Javaの文字列には、 UTF-16の内部表現getNameChineseメソッドで行っている変換は、US-ASCII以外の文字の表示を破棄します。 (そして漢字は!)。

この問題を説明できるように、私はあなたのコードを歩いていきます。その間、議論のために、私はnameChineseがMySQLデータベースから適切に格納され、取得されていると仮定しています。 (しかしこれは、文字エンコーディングの問題のもう一つの非常に簡単なソースです)。

  1. 私たちはnameChinese = ""
  2. nameChinese.getBytes("UTF-8")は3バイト0xE6,0xB1,0x89
  3. の配列を生成するISO-8859-1としてintrepretedこのバイト配列は "AEが±?" の文字を生成することを想定してみましょう(最後の文字は実際には印刷可能な文字ではなく、制御文字です)。

データベースから取得した文字列をjExcelAPIに直接入力するとどうなりますか?

+0

素晴らしい!ご協力いただきありがとうございます。 – user1216992

関連する問題