编码 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编码的区别的,希望能给大家提供帮助。


目录
相关文章
|
4月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
139 4
|
4月前
|
Java
Java实现随机生成某个省某个市的身份证号?如何编码?
【10月更文挑战第18天】Java实现随机生成某个省某个市的身份证号?如何编码?
307 5
|
4月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
101 2
|
1月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
112 60
|
6月前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
179 0
|
4月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
141 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
4月前
|
XML Java Maven
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
在 Cucumber 测试中自动将 Cucumber 数据表映射到 Java 对象
92 7
|
5月前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
37 2
|
6月前
|
Java PHP 开发者
PHP中的异常处理:Java常见的编码方式
在PHP开发中,掌握异常处理至关重要,它有助于预见并管理运行时错误,避免用户体验受损或数据丢失。本文介绍PHP异常处理的基本概念与实践,包括try-catch语句的使用,以及如何通过抛出和捕获异常来增强代码的健壮性和可靠性。通过示例展示如何避免常见错误,如除数为零的情况,并探讨多catch块和finally语句的高级用法,帮助开发者提升程序稳定性与可维护性。[总字符数:238]
43 0
|
存储 设计模式 IDE
阿里Java编码手册实战详解-OOP规约
阿里Java编码手册实战详解-OOP规约
143 0

热门文章

最新文章