2015-03-13 74 views
-2

如何将字符串转换为例如"Bohinjska Češnjica"。我从网站获得的字符串,它不在unicode中编码。它在使用swing的程序中工作得很好(Netbeans),但当我通过链接将jar发送到Windows控制台(运行jframe应用程序)时,它不会在字符串"Bohinjska Češnjica"中显示字符'Č''š'的正确字符。应用程序中的Unicode字符无法正确显示

String example="Bohinjska Češnjica"; 

我从网站该字符串。 如何在Swing应用程序中编码或显示为("Bohinjska Češnjica"),所以当我运行jframe应用程序时,它会向我显示这些字符(以及其他Unicode字符ofcourse('Ž','ž','č'和' S'))?

链接1:jar file of my program runned from console 链路2:when i run program from netbeans

READING含量网站

   URL nov = new URL("http://www.arso.gov.si/vreme/napovedi%20in%20podatki/vreme_avt.html"); 
      URLConnection conn = nov.openConnection(); //connect to a website 
      BufferedReader br = new BufferedReader(
        new InputStreamReader(conn.getInputStream())); 
      String inputLine; 
      StringBuilder niz = new StringBuilder(); 
      while ((inputLine = br.readLine()) != null) { 
       String vrstica = inputLine.trim(); //reading html... 

}

+1

您是否检查过从网站收到的字符串的编码? – pintxo 2015-03-13 08:52:54

+0

这是一个纯文本。我会很快发布链接到一个图像,所以你会看到我的意思。 – slodeveloper 2015-03-13 13:42:09

+0

为了尽快提供更好的帮助,请发布[MCVE](http://stackoverflow.com/help/mcve)(最小完整可验证示例)或[SSCCE](http://www.sscce.org/)(Short,Self包含,正确示例)。 – 2015-03-14 06:03:05

回答

0

的BufferedReader BR =新的BufferedReader( 新的InputStreamReader(conn.getInputStream(), “UTF-8”));

0

尝试使用哪个支持Unicode字符如Arial的Unicode MS字体。

4

在运行时,我们可以使用Font.canDisplayUpTo(String)来确定哪些安装的字体可以显示给定的文本。逻辑字体(如Font.SANS_SERIFFont.SERIF)通常由其他字体组成,可涵盖大量不同的脚本。

下面是使用给定文本的示例,以及在本机上看到的结果。

enter image description here

BTW - 谷歌翻译告诉我,是斯洛文尼亚,而不是克罗埃西亚,但幸运的是,完全相同的技术将任何脚本工作。

import java.awt.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.border.EmptyBorder; 
import java.util.Vector; 

public class CroationTextInGUI { 

    private JComponent ui = null; 
    private String text = "Bohinjska Češnjica"; 

    CroationTextInGUI() { 
     initUI(); 
    } 

    public void initUI() { 
     if (ui!=null) return; 

     ui = new JPanel(new BorderLayout(4,4)); 
     ui.setBorder(new EmptyBorder(4,4,4,4)); 

     String[] fontFamilies = GraphicsEnvironment. 
       getLocalGraphicsEnvironment(). 
       getAvailableFontFamilyNames(); 
     Vector<String> croatFreindlyFonts = new Vector<String>(); 
     for (String name : fontFamilies) { 
      Font font = new Font(name, Font.PLAIN, 20); 
      if (font.canDisplayUpTo(text)<0) { 
       croatFreindlyFonts.add(name); 
      } 
     } 
     final JList list = new JList(croatFreindlyFonts); 
     list.setVisibleRowCount(20); 
     list.getSelectionModel().setSelectionMode(
       ListSelectionModel.SINGLE_SELECTION); 
     ui.add(new JScrollPane(list), BorderLayout.LINE_START); 

     final JTextArea output = new JTextArea(text, 2, 12); 
     output.setLineWrap(true); 
     output.setWrapStyleWord(true); 
     ui.add(new JScrollPane(output)); 

     ListSelectionListener showFontListener = new ListSelectionListener() { 

      @Override 
      public void valueChanged(ListSelectionEvent e) { 
       Font f = new Font(
         list.getSelectedValue().toString(), Font.PLAIN, 50); 
       output.setFont(f); 
      } 
     }; 
     list.addListSelectionListener(showFontListener); 
     list.setSelectedIndex(0); 
    } 

    public JComponent getUI() { 
     return ui; 
    } 

    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (Exception useDefault) { 
       } 
       CroationTextInGUI o = new CroationTextInGUI(); 

       JFrame f = new JFrame("Croation Text in GUI"); 
       f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
       f.setLocationByPlatform(true); 

       f.setContentPane(o.getUI()); 
       f.pack(); 
       f.setMinimumSize(f.getSize()); 

       f.setVisible(true); 
      } 
     }; 
     SwingUtilities.invokeLater(r); 
    } 
} 
+0

问题已更新。当我回家时,我会发布一个图片链接(它是如何显示在NetBeans和Windows控制台(当我把一个链接到jar文件并执行)) – slodeveloper 2015-03-13 12:49:55

+1

(1+),我喜欢'canDisplayUpTo(... )'方法。绝对简化任务。 – camickr 2016-04-15 00:42:34

相关问题