如何转换字符串,例如"Bohinjska Češnjica"
。我从网站获得的字符串,并未在unicode
中编码。它在使用swing(Netbeans
)的程序中运行得很好,但是当我通过jar到windows控制台的链接(运行jframe
应用程序)时,它在字符串{{}中没有显示正确的字符1}}表示字符"Bohinjska Češnjica"
和'Č'
。
'š'
我从网站获取该字符串。
我如何在Swing应用程序中对String example="Bohinjska Češnjica";
进行编码或显示,因此当我运行("Bohinjska Češnjica")
应用程序时,它将显示此字符(以及其他unicode字符的课程('Ž','ž) ','č'和'Š'))?
链接1:jar file of my program runned from console 链接2:when i run program from netbeans
从网站上阅读内容:
jframe
}
答案 0 :(得分:5)
在运行时,我们可以使用Font.canDisplayUpTo(String)
来确定哪些已安装的字体可以显示给定的文本。 Font.SANS_SERIF
和Font.SERIF
等逻辑字体通常由其他字体组成,可以覆盖各种不同的脚本。
以下是使用给定文本的示例,其结果显示在此计算机上。
BTW - Google翻译告诉我这是斯洛文尼亚语而不是Croation,但幸运的是,完全相同的技术适用于任何脚本。
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);
}
}
答案 1 :(得分:0)
尝试使用支持Arial Unicode MS等字符字符的字体。
答案 2 :(得分:0)
BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream(),&#34; UTF-8&#34;));