Java中如何读取并打印文本文件中的印地语字符?
印地语字符显示异常的解决方法
一、确保文件读取时使用UTF-8编码
你仅处理了输出环节的编码,但读取文件时若未指定UTF-8,会直接导致字符解码错误。读取文件时必须明确指定编码:
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; public class ReadHindiFile { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader( new InputStreamReader(new FileInputStream("你的文件路径.txt"), StandardCharsets.UTF_8) ); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } }
二、修正控制台编码配置
即便代码指定了UTF-8输出,控制台自身编码不匹配仍会显示问号:
- IDEA/Eclipse:在运行配置中添加VM参数
-Dfile.encoding=UTF-8;或在配置的Common板块直接选择UTF-8编码。 - Windows命令行:执行命令
chcp 65001切换到UTF-8编码,同时将控制台字体更换为支持Unicode的类型(如Consolas、微软雅黑)。
三、给下拉框配置支持印地语的字体
下拉框显示方框,核心原因是组件使用的字体不支持印地语字符:
以Swing为例,给下拉框设置兼容印地语的字体:
import javax.swing.JComboBox; import java.awt.Font; public class HindiComboBox { public static void main(String[] args) { JComboBox<String> comboBox = new JComboBox<>(); // 选择系统中已安装的印地语支持字体,比如Noto Sans Devanagari Font hindiFont = new Font("Noto Sans Devanagari", Font.PLAIN, 12); comboBox.setFont(hindiFont); // 添加印地语文本选项 comboBox.addItem("कक्षा 4 रिमझिम"); comboBox.addItem("कक्षा 5 रिमझिम"); } }
若系统无对应字体,可安装开源的Noto Sans Devanagari字体。
四、验证文件本身的编码格式
用Notepad++等编辑器打开文本文件,检查编码是否为UTF-8。若不是,重新以UTF-8编码保存文件。
内容的提问来源于stack exchange,提问作者Monita Shinkar
相关产品推荐
相关产品推荐

