编码 GBK 的不可映射字符——【java菜鸟成长记】

简介: 编码 GBK 的不可映射字符——【java菜鸟成长记】

最近在学习一些java的入门知识,当然在学习的时候就少不了敲一些小例子,在敲小例子的时候都是用txt文本敲的,没有采用成熟的编译器,因为这样更有利于我们对一些基础语法的掌握,也可以见到些错误,这样更有利于我们的成长。下面就和大家分享一个常见的错误:  


20150905101507259.png


首先给出此错误的解决方案如下:

我们在新建文本文档的时候,默认的编码方式为UTF-8,如下图:

20150903190747119.gif


因为我们采用的时候UTF-8的编码方式所以导致了这个错误,我们应该将此java文件用记事本打开,然后另存为在另存为的时候选在ANSI的编码方式,然后将原来的文件覆盖,这样才重新编译和运行,就没有错误了!


20150903191130044.gif


这样我们就可以完美解决了这个错误。


下面我们来分析为什么会引起这个错误?想要弄秦楚这个问题,我们必须先弄清楚UTF-8和ANSI这两种编码方式到底有什么不同?


UTF-8 VS ANSI


ANSI编码一般指Windows-1252编码,是一个256个字符的字集的编码,每个字符由一个字节表示。其中前128个字符(00-7F)和ASCII的7bits编码一样,后128个字符中有一些欧洲国家用的有重音的字符。ANSI编码在不同语言的Windows下也指此语言下的Windows编码页,比如中文环境下指Windows-936(也就是GB2312),日文环境下是Windows-932(JIS)编码等等,也是前128个字符(00-7F)和ASCII的7bits编码一样,其他字符则由2个字节表示。


UTF-8是针对Unicode的可变长度字符编码,一个字符可以由1到4个字节表示,其中由一个字节表示的字符和ASCII的7bits编码一样,而包括中文在内的大部分字符则由3个字节表示。


所以如果文本里只有ASCII的7bits编码的那些,这两种编码是互相兼容没有区别的,但是对其他字符,编码就不同了,而且Windows-1252编码无法表达除了256个字符外的比如中文字符,其他的ANSI码如Windows-936也只能表示一部分Unicode中的字符。编码格式的不同导致程序无法运行很容易理解,因为同样的字在不同的编码方式下表达的字符是不同的或者是不能被表示的,除非是ASCII的7bits编码中的那些字符。


小结


在给我们的知识注入新生力量的时候总是会遇到这种或那种的阻塞,这时候我们需要利用原有的知识和网络来解决它,然后总结。这样我们会收获的更多,其实在查询资料的时候自己有了解了多种编码方式,像Unicode,ASCIIAnsi,UTF8,Unicode,ASCII编码的区别等,我们需要了解他们之间的区别,才能在以后的编程过程中更加的顺利,下面给大家推荐一篇博客,是关于Ansi,UTF8,Unicode,ASCII编码的区别的,希望能给大家提供帮助。


目录
相关文章
|
5月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
160 4
|
23天前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
52 15
|
5月前
|
Java
Java实现随机生成某个省某个市的身份证号?如何编码?
【10月更文挑战第18天】Java实现随机生成某个省某个市的身份证号?如何编码?
353 5
|
23天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
5月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
123 2
|
2月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
121 60
|
5月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
158 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
5月前
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
109 7
|
存储 设计模式 IDE
阿里Java编码手册实战详解-OOP规约
阿里Java编码手册实战详解-OOP规约
146 0
|
存储 安全 Java
阿里Java编码手册实战详解-集合处理篇
阿里Java编码手册实战详解-集合处理篇
134 0