Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序中的Unicode字符不';不能正确显示_Java_Swing_Netbeans_Unicode_Fonts - Fatal编程技术网

Java 应用程序中的Unicode字符不';不能正确显示

Java 应用程序中的Unicode字符不';不能正确显示,java,swing,netbeans,unicode,fonts,Java,Swing,Netbeans,Unicode,Fonts,如何转换这样的字符串,例如“Bohinjskašešnjica”。我从网站上获得的字符串,它不是用unicode编码的。它在使用swing(Netbeans)的程序中工作得很好,但当我通过jar到windows控制台的链接(运行jframe应用程序)时,它在字符串“Bohinjskašešnjica”中没有显示字符“š”的正确字符 String example="Bohinjska Češnjica"; 我从网站上获得该字符串。 我如何在Swing应用程序中按原样编码或显示(“Bohinjsk

如何转换这样的字符串,例如
“Bohinjskašešnjica”
。我从网站上获得的字符串,它不是用
unicode
编码的。它在使用swing(
Netbeans
)的程序中工作得很好,但当我通过jar到windows控制台的链接(运行
jframe
应用程序)时,它在字符串
“Bohinjskašešnjica”
中没有显示字符
“š”
的正确字符

String example="Bohinjska Češnjica";
我从网站上获得该字符串。 我如何在Swing应用程序中按原样编码或显示(“Bohinjskašešnjica”),所以当我运行
jframe
应用程序时,它会向我显示这些字符(当然还有其他unicode字符(“Ž”、“ž”、“č”和“č”)

链接1: 链接2:

阅读网站内容:


}

尝试使用支持unicode字符的字体,如Arial unicode MS。

在运行时,我们可以使用来确定哪些已安装的字体可以显示给定的文本。逻辑字体,如
Font.SANS_SERIF
Font.SERIF
通常由其他字体组成,可以覆盖各种不同的脚本

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

顺便说一句,谷歌翻译告诉我,这是斯洛文尼亚语而不是克罗地亚语,但幸运的是,完全相同的技术将适用于任何脚本

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);
    }
}
import java.awt.*;
导入javax.swing.*;
导入javax.swing.event.*;
导入javax.swing.border.EmptyBorder;
导入java.util.Vector;
公共类CroationTextInGUI{
私有JComponent ui=null;
私有字符串text=“Bohinjskašešnjica”;
CroationTextInGUI(){
initUI();
}
public void initUI(){
如果(ui!=null)返回;
ui=新JPanel(新边界布局(4,4));
ui.新订单(新的空订单(4,4,4,4));
字符串[]fontFamilies=GraphicsEnvironment。
getLocalGraphicsEnvironment()。
getAvailableFontFamilyNames();
Vector croatFreindlyFonts=新向量();
用于(字符串名称:fontFamilies){
Font Font=新字体(名称,Font.PLAIN,20);

if(font.canDisplayUpTo(text)BufferedReader br=新的BufferedReader(
新的InputStreamReader(conn.getInputStream(),“UTF-8”);

您是否检查了从网站收到的字符串的编码?它是纯文本。我将很快发布一个指向图像的链接,以便您了解我的意思。要更快地获得更好的帮助,请发布一个(最小完整可验证示例)或(简短、自包含、正确的示例)。“纯文本”有一个编码。你需要知道那个编码才能正确解释它。我在网站上发布了一个代码,给了我html,然后我用regex提取了我需要的信息…问题被更新了。当我回家后,我会发布一个图片链接(它在netbeans和windows控制台中的显示方式(当我把链接放到jar文件并执行时))(1+),我喜欢那种
canDisplayUpTo(…)
方法。绝对可以简化任务。
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);
    }
}