Java Stream API使用中俄语文本显示乱码的问题求助
解决Java输出俄语文本乱码问题
俄语文本输出乱码(显示为����)的核心原因是控制台编码与Java程序的字符编码不匹配:Java内部字符串以UTF-16存储,但输出到控制台时会转换为系统默认编码,若该编码不支持西里尔字符(俄文)就会出现乱码。以下是针对不同场景的解决办法:
IDE环境(以IntelliJ IDEA为例)
- 打开
File → Settings,搜索File Encodings,将Global Encoding、Project Encoding、Default encoding for properties files全部设置为UTF-8 - 在Run/Debug配置中,找到
VM options,添加参数:-Dfile.encoding=UTF-8
命令行环境
- Windows命令提示符:先执行
chcp 65001切换到UTF-8编码,再运行程序 - 编译和运行时指定编码:
javac -encoding UTF-8 Library.java java -Dfile.encoding=UTF-8 Library
代码层面调整(可选,不推荐作为首选方案)
手动指定输出流的编码,替换原有的System.out.println逻辑:
package javalearn; import java.util.ArrayList; import java.util.Collections; import java.io.PrintStream; import java.io.UnsupportedEncodingException; public class Library { public static void main(String[] args) { ArrayList<String> cities = new ArrayList<>(); Collections.addAll(cities, "Москва", "Лондон", "Мадрид", "Ереван", "Баку"); try (PrintStream out = new PrintStream(System.out, true, "UTF-8")) { cities.stream() .filter(s -> s.length() == 4) .forEach(out::println); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }
内容的提问来源于stack exchange,提问作者Maksim1251
相关产品推荐
相关产品推荐

