我正在尝试从 JTextField 读取字符串,只要字符串是英文的,一切正常。但是,如果我将其更改为韩文或日文,我会在字符串中得到所有一些模糊字符。有没有办法可以用给定的语言读取这些字符串?
例如 JTextField 包含:할로윈 빅 세일 마지막날입니다!字符串读取是:??? ? ?? ??????
我正在尝试从 JTextField 读取字符串,只要字符串是英文的,一切正常。但是,如果我将其更改为韩文或日文,我会在字符串中得到所有一些模糊字符。有没有办法可以用给定的语言读取这些字符串?
例如 JTextField 包含:할로윈 빅 세일 마지막날입니다!字符串读取是:??? ? ?? ??????
确保您拥有正确的编码和适当的 IDE。
在 IntelliJ 中使用 UTF-8 编码进行调试时:
我使用的代码片段:
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);
}
}
}
您是否检查过用于调试字符串内容的字体是否确实支持这些字符?大多数编码或 UI 字体仅支持欧洲字符。
您可以尝试将字符串编码为 UTF-8,以使用“getBytes”或将字符串写入 UTF-8 文件来实际检查调试器中的字节。