设置编码方式,如:
String name = "这是测试程序" ;
new String(name.getBytes("8859_1"), "GBK")

解决方案 »

  1.   

    楼上这样不对的, 我的文字是直接在 bean 里定义的, 不是页面传来的!!所以,假如用 
              String name = "这是测试程序" ;
              new String(name.getBytes("8859_1"), "GBK")那这样,经过一次转换,出来的会是 "?"  号
      

  2.   

    这个问题我遇到过,是JDK的问题。
    C:\j2sdk1.4.2_01\jre\lib\font.property.zh改为:
    # @(#)font.properties.zh 1.10 02/03/07
    #
    # Copyright 2002 Sun Microsystems, Inc. All rights reserved.
    ## Component Font Mappings
    #
    dialog.plain.0=Arial,ANSI_CHARSET
    dialog.plain.1=\u5b8b\u4f53,GB2312_CHARSET
    dialog.plain.2=WingDings,SYMBOL_CHARSET
    dialog.plain.3=Symbol,SYMBOL_CHARSETdialog.bold.0=Arial,ANSI_CHARSET
    dialog.bold.1=\u5b8b\u4f53,GB2312_CHARSET
    dialog.bold.2=WingDings,SYMBOL_CHARSET
    dialog.bold.3=Symbol,SYMBOL_CHARSETdialog.italic.0=Arial,ANSI_CHARSET
    dialog.italic.1=\u5b8b\u4f53,GB2312_CHARSET
    dialog.italic.2=WingDings,SYMBOL_CHARSET
    dialog.italic.3=Symbol,SYMBOL_CHARSETdialog.bolditalic.0=Arial,ANSI_CHARSET
    dialog.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
    dialog.bolditalic.2=WingDings,SYMBOL_CHARSET
    dialog.bolditalic.3=Symbol,SYMBOL_CHARSETdialoginput.plain.0=Courier New,ANSI_CHARSET
    dialoginput.plain.1=\u5b8b\u4f53,GB2312_CHARSET
    dialoginput.plain.2=WingDings,SYMBOL_CHARSET
    dialoginput.plain.3=Symbol,SYMBOL_CHARSETdialoginput.bold.0=Courier New,ANSI_CHARSET
    dialoginput.bold.1=\u5b8b\u4f53,GB2312_CHARSET
    dialoginput.bold.2=WingDings,SYMBOL_CHARSET
    dialoginput.bold.3=Symbol,SYMBOL_CHARSETdialoginput.italic.0=Courier New,ANSI_CHARSET
    dialoginput.italic.1=\u5b8b\u4f53,GB2312_CHARSET
    dialoginput.italic.2=WingDings,SYMBOL_CHARSET
    dialoginput.italic.3=Symbol,SYMBOL_CHARSETdialoginput.bolditalic.0=Courier New,ANSI_CHARSET
    dialoginput.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
    dialoginput.bolditalic.2=WingDings,SYMBOL_CHARSET
    dialoginput.bolditalic.3=Symbol,SYMBOL_CHARSETserif.plain.0=Times New Roman,ANSI_CHARSET
    serif.plain.1=\u5b8b\u4f53,GB2312_CHARSET
    serif.plain.2=WingDings,SYMBOL_CHARSET
    serif.plain.3=Symbol,SYMBOL_CHARSETserif.bold.0=Times New Roman,ANSI_CHARSET
    serif.bold.1=\u5b8b\u4f53,GB2312_CHARSET
    serif.bold.2=WingDings,SYMBOL_CHARSET
    serif.bold.3=Symbol,SYMBOL_CHARSETserif.italic.0=Times New Roman,ANSI_CHARSET
    serif.italic.1=\u5b8b\u4f53,GB2312_CHARSET
    serif.italic.2=WingDings,SYMBOL_CHARSET
    serif.italic.3=Symbol,SYMBOL_CHARSETserif.bolditalic.0=Times New Roman,ANSI_CHARSET
    serif.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
    serif.bolditalic.2=WingDings,SYMBOL_CHARSET
    serif.bolditalic.3=Symbol,SYMBOL_CHARSETsansserif.plain.0=Arial,ANSI_CHARSET
    sansserif.plain.1=\u5b8b\u4f53,GB2312_CHARSET
    sansserif.plain.2=WingDings,SYMBOL_CHARSET
    sansserif.plain.3=Symbol,SYMBOL_CHARSETsansserif.bold.0=Arial,ANSI_CHARSET
    sansserif.bold.1=\u5b8b\u4f53,GB2312_CHARSET
    sansserif.bold.2=WingDings,SYMBOL_CHARSET
    sansserif.bold.3=Symbol,SYMBOL_CHARSETsansserif.italic.0=Arial,ANSI_CHARSET
    sansserif.italic.1=\u5b8b\u4f53,GB2312_CHARSET
    sansserif.italic.2=WingDings,SYMBOL_CHARSET
    sansserif.italic.3=Symbol,SYMBOL_CHARSETsansserif.bolditalic.0=Arial,ANSI_CHARSET
    sansserif.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
    sansserif.bolditalic.2=WingDings,SYMBOL_CHARSET
    sansserif.bolditalic.3=Symbol,SYMBOL_CHARSETmonospaced.plain.0=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.plain.1=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.plain.2=WingDings,SYMBOL_CHARSET
    monospaced.plain.3=Symbol,SYMBOL_CHARSETmonospaced.bold.0=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.bold.1=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.bold.2=WingDings,SYMBOL_CHARSET
    monospaced.bold.3=Symbol,SYMBOL_CHARSETmonospaced.italic.0=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.italic.1=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.italic.2=WingDings,SYMBOL_CHARSET
    monospaced.italic.3=Symbol,SYMBOL_CHARSETmonospaced.bolditalic.0=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.bolditalic.1=\u5b8b\u4f53,GB2312_CHARSET
    monospaced.bolditalic.2=WingDings,SYMBOL_CHARSET
    monospaced.bolditalic.3=Symbol,SYMBOL_CHARSET# Font File Names
    #
    filename.\u5b8b\u4f53=SIMSUN.TTCfilename.Arial=ARIAL.TTF
    filename.Arial_Bold=ARIALBD.TTF
    filename.Arial_Italic=ARIALI.TTF
    filename.Arial_Bold_Italic=ARIALBI.TTFfilename.Courier_New=COUR.TTF
    filename.Courier_New_Bold=COURBD.TTF
    filename.Courier_New_Italic=COURI.TTF
    filename.Courier_New_Bold_Italic=COURBI.TTFfilename.Times_New_Roman=TIMES.TTF
    filename.Times_New_Roman_Bold=TIMESBD.TTF
    filename.Times_New_Roman_Italic=TIMESI.TTF
    filename.Times_New_Roman_Bold_Italic=TIMESBI.TTFfilename.WingDings=WINGDING.TTF
    filename.Symbol=SYMBOL.TTF# Missing Glyph Character
    #
    default.char=2751# Component Font Character Encodings
    #
    fontcharset.dialog.1=sun.io.CharToByteGBK
    fontcharset.dialog.2=sun.awt.windows.CharToByteWingDings
    fontcharset.dialog.3=sun.awt.CharToByteSymbolfontcharset.dialoginput.1=sun.io.CharToByteGBK
    fontcharset.dialoginput.2=sun.awt.windows.CharToByteWingDings
    fontcharset.dialoginput.3=sun.awt.CharToByteSymbolfontcharset.serif.1=sun.io.CharToByteGBK
    fontcharset.serif.2=sun.awt.windows.CharToByteWingDings
    fontcharset.serif.3=sun.awt.CharToByteSymbolfontcharset.sansserif.1=sun.io.CharToByteGBK
    fontcharset.sansserif.2=sun.awt.windows.CharToByteWingDings
    fontcharset.sansserif.3=sun.awt.CharToByteSymbolfontcharset.monospaced.0=sun.io.CharToByteGBK
    fontcharset.monospaced.1=sun.io.CharToByteGBK
    fontcharset.monospaced.2=sun.awt.windows.CharToByteWingDings
    fontcharset.monospaced.3=sun.awt.CharToByteSymbol# Exclusion Ranges
    #
    exclusion.dialog.0=0100-20ab,20ad-f8ff
    exclusion.dialoginput.0=0100-20ab,20ad-f8ff
    exclusion.serif.0=0100-20ab,20ad-f8ff
    exclusion.sansserif.0=0100-20ab,20ad-f8ff
    exclusion.monospaced.0=0100-20ab,20ad-f8ff# Text Input Character Set
    #
    inputtextcharset=GB2312_CHARSET
      

  3.   

    呵呵,楼上的解决方法,我认为还是不能解决问题,关键在于字体的设置,并不是编码的问题。
    g.setFont(new Font("宋体",12,0));
    然后再g.drawString,看看如何?
      

  4.   

    回复人: zhang21cnboy(事了抚衣去,不留身与名) ( ) 信誉:100  2005-03-08 09:24:00  得分: 0  
     
     
       呵呵,楼上的解决方法,我认为还是不能解决问题,关键在于字体的设置,并不是编码的问题。
    g.setFont(new Font("宋体",12,0));
    然后再g.drawString,看看如何?
      
     
    *****************************************************************8牛,呵呵,我现在写成  g.setFont(new Font("宋体", Font.BOLD, 30)) ,就行了
      

  5.   

    问题又来了,      g.setFont(new Font("宋体", Font.BOLD, 30));
         g.drawString("统计分析", 50, 505);这段代码在windows 下正确执行,中文也是正确的,但放到 unix 下,就又变成方框了. 是 unix 没有这字体,那该怎么做呢?