关于system.in读入的数据,打印出来断码问题

网上找了好多篇,最终还是这篇文章帮我解决了问题:http://blog.sina.com.cn/s/blog_5016ee390102e3xz.html(感谢这篇的作者(*^__^*) 嘻嘻……)

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String opertor = bf.readLine();

String name1 = bf.readLine();
System.out.println(name1);

这是很常见的获取键盘输入的一段Java代码,但在运行过程中,我发现只要我输入的是中文,就都是乱码。

产生原因:因为这个开源项目的默认字符编码为UTF-8,所以我的控制台的字符编码也自动变成了UTF-8,而键盘的输入流的默认格式是GBK格式,这样就造成了在GBK转UTF-8的过程中产生的奇数乱码错误(这个问题的解释可以在搜索引擎找到)。

解决办法: 
1.在代码区域右键 -> run as -> run configurations -> common(右侧) -> console encoding 
如果出现此错误,此时的编码格式应该是UTF-8,选择Other,这时可能没有GBK选项,如果没有,则执行之后操作。

2.更改该项目的文本文件编码,项目右键 -> properties -> resource -> 先将 text file encoding调整回GBK,然后再回去重新设置console encoding编码为GBK。

现在很多项目要求在项目开始之前统一字符编码为UTF-8,这是为了更好的支持国际化,这无可避免得可能会出现控制台乱码这类比较偏门的问题(最少我查了挺久的),所以写出来给大家分享一下~

时间: 2024-10-23 15:49:24

关于system.in读入的数据,打印出来断码问题的相关文章

java读入URL数据

转载: URL类中的openStream()方法,可以读取一个URL对象所指定的资源,返回一个InputStream对象. (1)file协议介绍 File协议主要用于访问本地计算机中的文件,就如同在Windows资源管理器中打开文件一样. 要使用File协议,基本的格式如下:file:///文件路径(或者是file://localhost,但不能是file://本机IP),比如要打开F盘flash文件夹中的1.swf文件,那么可以在资源管理器或IE地址栏中键入:file:///f:/flash

java跨平台、对话框、二进制数据打印

java跨平台 public class JavaTest{ public static void main(String[] args){ System.out.println("java Test for windows/linux"); } } windows,linux平台下面, 使用javac JavaTest.java; java JavaTest命令进行测试,顺利通过. 编译中间产生的JavaTest.class 可以放到不同的jvm虚拟机中进行解释执行. 对话框 Swi

底子数据类型,数据内部存储及数据打印办法

i1底子数据类型有:    char\short\int\unsigned\long\float\double;2数据内部存储 数据内部存储是由"0101二进制构成,当次序员输入一个值 时,内部会转换成补码存储,只是单纯地存储数据,也不知道 将来输出是什么姿势. 例如:inta=-1;unsignintb=0xFFFFFFFF; 这两个数在内部存储是一样的3数据打印办法: 数据打印办法便是抉择内部存储的数据将来输出是什么姿势的上 述中 a和b值在内部存储是一样的所以只要它打印办法一样 效果必定一

ASM时的OFM特性对影的建数据文件名的影响及为SYSTEM表空间的数据文件使用别名

客户遇到个DG的问题,存储使用的ASM管理,有多个磁盘盘. 在主库创建数据文件,备库自动创建的数据文件都在同一磁盘组,并且在主库创建数据文件是指定的是类似**.DBF的名字,到备库也变成了使用ASM的数字格式**.266.123456 这是因为使用了OMF特性. OMF,全称是Oracle_Managed Files,即Oracle文件管理. 使用OMF可以简化管理员的管理工作,不用指定文件的名字.大小.路径,其名字,大小,路径由oracle 自动分配.在删除不再使用的日志.数据.控制文件时,O

python读入txt数据,并转成矩阵

txt文件的部分数据截图如下图.数据链接:https://pan.baidu.com/s/1_Ce6WLGDTWf7qQIvpP-70Q   提取码:n22a python读入该数据,并转成array,代码如下: import os import numpy as np # 数据文件转矩阵 # path: 数据文件路径 # delimiter: 行内字段分隔符 def file2array(path, delimiter): recordlist = [] fp = open(path, 'r'

Lodop打印二维码内容长度不同如何大小相同

利用Loodop打印控件打印二维码的时候,往往传入的数值是变量,有的只有一个数字,有的却一大堆数字和字母,根据内容长度不同,二维码大小也不同,这样如果批量打印二维码标签,传入的数据是不同的,会造成有的标签二维码大,有的二维码小的状况.出现这种状况,是因为Lodop中默认输出二维码的版本是AUTO(自动),这会导致随着二维码中的数据量不同,二维码大小也会不同.如果想把所有二维码设置成同一大小,解决方法是用语句指定同一个版本.例如:每个二维码加上相同的版本,LODOP.SET_PRINT_STYLE

Java生成并打印二维码

本次做订餐系统中,需要用到在Java生成二维码,并在jsp页面打印并输出,其中在action中生成二维码. 关键代码如下 1 public void reWeiMa() throws Exception{ 2 //设置页面不缓存 3 HttpServletResponse response = ServletActionContext.getResponse(); 4 HttpServletRequest quest = ServletActionContext.getRequest(); 5

物联网数据卡系统源码——通信模块

在这个万物互联的时代,物联网应用以及深入到我们生活的方方面面,大到智慧城市.智能交通,小到行车记录仪,各种穿戴设备,智能家居,都有物联网应用的身影,让我们感受到生活品质和档次的提升. 那么作为程序员的我们,物联网通信到底如何做呢? 本系列文章即将带您一起走进物联网系统开发的世界.也希望同行一起分享和讨论物联网相关知识和开发经验. 首先看一下物联网系统的整体架构,看上一篇文章:物联网数据卡系统源码——整体架构 本篇将讲解物联网系统中的通信模块实现原理及相关内容 物联网数据卡系统源码——通信模块 1

html文件可以获取数据,但返回码500

Apache网站,php访问正常,返回码正常,html文件可以获取数据,但返回码500 问题环境:Apache(2.4.10),php4网站目录下有.php以及.html 解决思路:1.重启服务2.访问其他html文件3.仔细检查配置文件(如需修改配置文件,先备份!先备份!先备份!)4.若修改无果,根据报错日志定位具体问题5.若报错日志无意义,修改网站根目录,写入测试页面6.修改前后配置文件对比如下:[[email protected] etc]# diff httpd.conf httpd.c