第一个java程序中文乱码以及如何解决
出现问题:编码gbk的不可映射字段
原因:.java文件的编码与cmd命令执行器使用的编码不一致
我们使用的.java文件的编码为UTF-8

Cmd默认使用的编码为GBK:


解决方式统一编码:
方法1:更改源文件编码为GBK与cmd.exe对应

更改编码为ANSI编码,对应的就是GBK编码,然后将乱码文字重新输入保存。(如果用的是电脑自带记事本,另存为存储的编码也更改为ANSI编码,然后注意内容不乱吗即可)

使用javac命令正常编译:

解决方法2:编译的时候指定以何种编码方式进行编码
使用javac命令增加 -encoding 参数指定编码方式实现:
命令:
Javac -encoding UTF-8 HelloWorld.java

运行
运行java程序我们使用的是java命令
Java .class文件名称

出现问题:UTF-8编码编写的java文件在不指定编码方式的时候可以成功编译


原因:
编译的过程是程序由.java文本->机器码(2进制)->.class文本的过程
不同的编码方式一个字符在计算机内的二进制计算的方式不一样
如UTF-8编码一个中文字符占3个字节,GBK中一个中文占2个字节。
‘你’ UTF-8可能存储为 00111010 00110101 01100000,GBK编码可能存储为 010100011 10111000
同样的内容UTF-8存储之后用GBK读取可能出现1.5个长度的内容,解析得到的内容也是和原来不一样的,如果解析不出来的话,那么就会报错不可映射字符,有些虽然可以解析出来但是与原文内容已经截然不同了。GBK存储用UTF-8存储也是同样道理。
这里你好世界转为机器码后用GBK读取是得到了有效字符序列的,但是内容混乱了,我们执行便知:
第一个java程序中文乱码以及如何解决的更多相关文章
- vc2010 win32 控制台应用程序中文乱码
vc2010 win32 控制台应用程序中文乱码 在 vc2010 上用 win32 控制台程序写些测试代码调用 windows api ,处理错误信息时,发现用 wprintf 输出的错误信息出现了 ...
- 一劳永逸Java环境配置,以及编写我的第一个Java程序
Java环境配置,以及编写我的第一个Java程序 配置步骤 1.下载jdk 2.安装步骤 3.配置环境 4.我的第一个Java程序 配置步骤 网上的教程有很多,方法也都不尽相同.今天我就分享一下我的配 ...
- 准备java编程软件与第一个java程序
我们要用的java的编程软件叫做:eclipse windows上安装eclipse 首先需要一个浏览器 要下载eclipse最简单的方式就是在官网下载 官网:https://www.eclipse ...
- 搭建java开发环境、使用eclipse编写第一个java程序
搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...
- Java起源、发展历程、环境变量、第一个Java程序等【1】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pi ...
- java ee 中文乱码的问题
java ee 中文乱码的问题 发生中文乱码的三种情况 (一) 表单form Post 方法 直接在服务器中设置 request.setCharacterEncoding("utf-8&qu ...
- 第一个java程序
完成自己的第一个java程序 1.新建一个文本文档,在文本文档中编写自己第一个java程序的代码,代码如下; class hello { public static void main(String[ ...
- Java编程-第一个Java程序
Java编程用到的IDE是Eclipse. 关于第一个Java程序实现的简单流程: (1) 下载eclipse (2) File-New-Java Project 命名工程名字:Hello ...
- 做为一个Java程序员,你需要哪些傍身的技能?
最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...
随机推荐
- RocketMQ使用笔记
apache rocketmq document : http://rocketmq.apache.org/community/ rocketmq 工具下载地址:https://github.com/ ...
- 【Spark-core学习之四】 Spark任务提交
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
- pypi上传命令
windows 1.新建一个setup.py文件与你自己写的.py模块放在一个文件夹内 内容: from distutils.core import setup setup( name = " ...
- vue组件传值
组件的传值(组件之间的通讯) 1.父子通信 1)父传子 传递:当子组件在父组件中当做标签使用的时候,通过给子组件绑定一个自定义属性,值为需要传递的数据 接收:在子组件内部通过props进行接收 接收的 ...
- 如何将数据库中的数据导入到Solr中
要使用solr实现网站中商品搜索,需要将mysql数据库中数据在solr中创建索引. 1.需要在solr的schema.xml文件定义要存储的商品Field. 商品表中的字段为: 配置内容是: < ...
- Docker Swarm 创建overlay网络
Docker Swarm 创建overlay网络 环境: 系统:Centos 7.4 x64 应用版本:Docker 18.09.0 管理节点:192.168.1.79 工作节点:192.168.1. ...
- JS(JavaScript)的初了解4(更新中···)
1.JS的本质就是处理数据.数据来自于后台的数据库. 所以变量就起到一个临时存储数据的作用. ECMAScript制定了JS的数据类型. 数据类型有哪些? 字符串 String 数字 Num ...
- spring-cloud-config-server——Environment Repository(Git Backend)
参考资料: https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.4.0.RELEASE/single/spring-cl ...
- 浅谈String中的==和对象中引用对象类型的==
@Test public void test02() { StringBuffer sb = new StringBuffer(); sb.append('a'); sb.append(11); Sy ...
- Cocos Creator学习四:按钮响应事件
1.方法一:通过编辑器对cc.Button的属性进行拖放操作进行控制 (1)创建脚本BtnClick1.js,增加btnClick1函数,然后拖放到Canvas节点中(记得拖放,否则下面步骤将找不到对 ...