2015-03-13 73 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

相關問題