java - Java Swing:未显示扩展的 ASCII 字符
问题描述
我试图在我的 JTextPanel 中显示 ASCII 字符,但它不适用于一些扩展字符,如 ASCII 217、ASCII 180 和我在 ASCII 表中找不到的向上箭头。
我从文件系统中读取了一个带有 ASCII 字符的文件,现在假设我的问题是显示文件内容。对于上面的字符,将显示一个空格。我已经尝试了所有可用的字符集Charset.availableCharsets()
,以及几种字体。
public static void main(String[] args) throws IOException {
JFrame frame = new JFrame();
frame.setTitle("test");
frame.setBounds(100, 100, 900, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Container contentPane = frame.getContentPane();
JTextPane panel = new JTextPane();
contentPane.add(panel);
JFileChooser fileChooser = new JFileChooser();
if ( fileChooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION ) {
File selectedFile = fileChooser.getSelectedFile();
InputStream in = new FileInputStream(selectedFile);
InputStreamReader reader = new InputStreamReader(in, StandardCharsets.ISO_8859_1);
BufferedReader buffer = new BufferedReader(reader);
String s = null;
if ((s = buffer.readLine()) != null) {
panel.setText(s);
}
}
}
请参阅 we.tl/t-4hf9pgcsEZ(使用 https)下载测试文件
这是文件的内容:
À¹ëÉÃN§T´jtkDÄ´†ê]":2q'6u$Q!44à!
®
当我在“编辑问题窗口”中通过此处的内容时,我清楚地看到了字符,但是当我保存我的编辑时,许多字符消失了......也许是我面临的问题的线索
使用在线工具转换为 hexa 的文件:
0xC0, 0xB9, 0xEB, 0xC9, 0xC3, 0x04, 0x4E, 0xA7, 0x54, 0xB4, 0x6A, 0x74, 0x6B, 0x44, 0xC4, 0x18,
0xB4, 0x17, 0x86, 0xEA, 0x5D, 0x22, 0x3A, 0x32, 0x17, 0x12, 0x13, 0x71, 0x27, 0x11, 0x36, 0x75,
0x24, 0x51, 0x21, 0x34, 0x34, 0x10, 0x14, 0xE0, 0x21, 0x02, 0x0E, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E,
0x0F, 0x0F, 0x00, 0x00, 0xAE,
解决方案
推荐阅读
- python - 提高从 s3 读取 lambda 代码的性能
- python - 如何获取现在正在下载的 url 或文件名?
- sql - 如何纠正 VIEW (MariaDB) 中客户端内存不足且 row_number 不增加的 CTE 问题?
- java - 在数据库中插入新数据时刷新我的 JTable
- python - 是否有更 Pythonic 的方式来编写多重比较
- xamarin.forms - 导航到页面的延迟包含 3 个列表视图
- wordpress - 删除单个产品视图上的元链接
- excel - 通过 VBA 创建快捷方式
- r - 使用 R 连接到位于其他 ip 上的 oracle 数据库
- selenium - Selenium ElementClickInterceptedException - 拦截/接收相同的元素