我正在尝试从JTextField读取字符串,只要字符串是英文的,一切正常。但是,如果我将其更改为韩语或日语,我会在字符串中获得所有模糊字符。 有没有办法可以用给定的语言读取这些字符串?
例如 JTextField包含:할로윈빅세일마지막날입니다! 而字符串读取是:??? ? ?? ???????!
答案 0 :(得分:3)
确保您拥有正确的编码和正确的IDE。
使用UTF-8编码在IntelliJ中进行debbuging时:
我使用的代码段:
import java.awt.*;
import javax.swing.*;
public class I18n {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame("i18n");
I18nView view = new I18nView();
frame.getContentPane().add(view);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(200, 150));
frame.setLocationRelativeTo(null); // Center
frame.pack();
frame.setVisible(true);
}
});
}
static class I18nView extends JPanel {
private String i18n = " 할로윈 빅 세일 마지막날입니다!";
private JTextField i18nTextField;
I18nView() {
createComponents();
makeLayout();
test();
}
private void createComponents() {
i18nTextField = new JTextField(i18n);
}
private void makeLayout() {
add(i18nTextField);
}
private void test() {
String another = i18nTextField.getText();
System.out.println("another = " + another);
}
}
}
答案 1 :(得分:1)
您是否检查过用于调试String内容的字体是否实际支持这些字符?大多数编码或UI字体不支持超过欧洲字符。
您可以尝试将String编码为UTF-8,以使用“getBytes”或通过将String写入UTF-8文件来实际检查调试器中的字节。