文字列が英語である限り、JTextField から文字列を読み込もうとしています。すべて正常に動作します。しかし、韓国語または日本語に変更すると、文字列にあいまいな文字がすべて表示されます。指定された言語でこれらの文字列を読み取る方法はありますか?
たとえば、JTextField には次のものが含まれます。そして文字列の読み取りは: ??? ? ?? ?????????!
文字列が英語である限り、JTextField から文字列を読み込もうとしています。すべて正常に動作します。しかし、韓国語または日本語に変更すると、文字列にあいまいな文字がすべて表示されます。指定された言語でこれらの文字列を読み取る方法はありますか?
たとえば、JTextField には次のものが含まれます。そして文字列の読み取りは: ??? ? ?? ?????????!
適切なエンコーディングと適切な IDE があることを確認してください。
UTF-8 エンコーディングを使用して IntelliJ でデバッグする場合:
私が使用したコードスニペット:
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);
}
}
}
String の内容をデバッグするために使用するフォントが実際にそれらの文字をサポートしていることを確認しましたか? ほとんどのコーディングまたは UI フォントは、ヨーロッパ文字以外をサポートしていません。
「getBytes」を使用するか、文字列をUTF-8ファイルに書き込むことにより、文字列をUTF-8としてエンコードして、デバッガーで実際にバイトをチェックすることができます。