几种字符乱码

几种字符乱码其他编码转成iso8859-1出现乱码?(问号):   原因:是因为iso8859-*的处理逻辑,对不存在的的码值直接解析为?号(0x3F)  演示://控制台设置为iso8859-1,输出一个左手图标”☜”,控制台显示乱码System.out.println(‘\u261c’);   解决:   处理好不同编码,iso是西欧用的比较多的编码,如果

大家好,又见面了,我是你们的朋友全栈君。

其他编码转成iso8859-1出现乱码?(问号):

    原因:是因为iso8859-*的处理逻辑,对不存在的的码值直接解析为?号(0x3F)

   演示:

// 控制台设置为iso8859-1,输出一个左手图标"☜",控制台显示乱码
System.out.println('\u261c');

    解决:

    处理好不同编码,iso是西欧用的比较多的编码,如果只是一个地区可以用gbk,建议把最基本编码方式设置为utf-*或者unicode形式,这样兼容性更好些

unicode编码字符输出显示方括号,或者方框中带一个16进制的值:

    原因:缺少字体,我们平时在输入一个编码时其实是输入内码,或者称之为区位码,显示的字符是通过区位码找到对应的具体字符点阵信息,该信息才是显示的图形符号的具体信息,现在操作系统用字符库记录字符点阵信息(如:24X24,32X32)。unicode由于定义了大量的字符区位码,但是没有提供对应的字符点阵,所以各个系统上不一定有对应的点阵信息,当然官方提供了一个字符库,但是里面不能显示所有的字符,有些解析成显示方框加16进制值,大部分系统中会显示成一个方框

   演示代码:  

// 控制台设置为utf-8,显示"&#211B8;",由于我的系统中不存在这个字符,因此无法正确显示该字符
System.out.println(Character.toChars(0x211B8));

几种字符乱码

    解决:

    添加字体,把生僻字库加入即可

GBK编码转成utf-8编码出现“��”种方式的乱码

    原因:GBK和UTF-8互转是不对称的,即统一个GBK转成的UTF-8后的值转回来不一定是相同的GBK(会添加0x00)

    演示:

// 控制台设置为UTF-8, 用GBK的byte序列去安unicode方式解析
System.out.println(new String("中国".getBytes("GBK")));

    解决:

    gbk和utf-8转码需要根据utf-8编码方式进行代码编写,可以网上找下,也可以自己根据规则写,但是不能直接转。同样gbk奇数位的转码也是有问题的,自己思考下编码方式就可知道

常规编码显示出错:

    原因:主要是由于不同编码转换没出处理好导致,编码只要做到对称转换基本能解决这个问题

    解决:选择正确的编码,如果不知道原先是何种编码,可以采用jchardet(jchardet是mozilla自动字符集探测算法代码的java移植)的编码试探方式找出具体编码。

  

显示unicode中编码值大于16位的字符:

System.out.println(Character.toChars(0x211B8));

// 不能通过System.out.println("\u0x211B8");
// 也不能通过赋值给char数组输出

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134305.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux chmod 755

    linux chmod 755chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。一般是三个数字:第一个数字表示文件所有者的权限第二个数字表示与文件所有者同属一个用户组的其他用户的权限第三个数字表示其它用户组的权限。权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。所以,ch…

    2022年7月16日
    25
  • 电子书 android高薪之路-android程序员面试宝典.pdf

    电子书 android高薪之路-android程序员面试宝典.pdf《Android高薪之路:Android程序员面试宝典》取材于各大IT公司面试真题,所给出的试题尽可能地覆盖了Android应用开发的各个方面,而且大多数试题都有解析部分,读者可以通过这部分更深入地理解试题中所包含的技术内容,希望真正做到由点成线,举一反三。 书中还将Android中涉及的各个常用技术问题进行筛选、分类。这样读者可以有的放矢,对自己还没有掌握的Android技术进行重点攻…

    2022年4月28日
    122
  • eclipse如何使用svn_pr入门教程

    eclipse如何使用svn_pr入门教程一、Windows下安装SVN安装过程直接点击下一步即可,不想用默认位置的话,可以更改安装位置。二、检查安装是否成功1、检查环境变量中是否自动配置了系统变量。(默认是自动配置的)。2、安装根目录其中bin目录下是一些可执行文件(.exe)3、打开cmd窗口,输入命令svn–version检查版本号,查看安装是否成功。由于已经配置了环境变量,所以可以在任何位置使用svn…

    2022年9月26日
    3
  • linux tomcat自动重启(linux重启服务命令)

    在Linux系统下,重启Tomcat使用命令操作的!首先,进入Tomcat下的bin目录cd/usr/local/tomcat/bin使用Tomcat关闭命令./shutdown.sh查看Tomcat是否以关闭ps-ef|grepjava如果显示以下相似信息,说明Tomcat还没有关闭root1297610Sep01?00:10:22/u…

    2022年4月18日
    148
  • 操作系统核心原理之内存管理思维导图

    操作系统的两个角色分别是魔术师和管理者,在管理者这个角色中,除了CPU之外,内存是操作系统要管理的另外一个重要资源。内存管理需要达到两个目标:一是地址保护,即一个程序不能访问另一个程序的地址空间。二是

    2021年12月19日
    54
  • oracle 行列转换 pivot

    oracle 行列转换 pivot

    2021年8月31日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号