几种字符乱码

几种字符乱码其他编码转成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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ruby On Rails 教程学习

    Ruby On Rails 教程学习

    2021年8月25日
    80
  • MySQL添加新用户、为用户创建数据库、为新用户分配权限

    MySQL添加新用户、为用户创建数据库、为新用户分配权限

    2021年10月18日
    41
  • ds什么意思_小店源码

    ds什么意思_小店源码介绍:云铺购最新Ds网系统无后门全开源可运营版本控制端功能支持一键通秒搭建Ds网站点,一键新增修改站点版本,支持QQ一键通登录自主添加站点域名管理站点,可配置后台安全访问域名白名单IP(实时保护)控制端支持一键备份旗下所有站点数据,共享数据版大大减少服务器压力主站点功能前后台支持QQ一键通登录,前台风格8套内页风格3套,免密支付,订单代付自定义网站公告导航,等级配置,邮箱配置,密匙配置,站点一键通装修支持一键通秒对接云铺购系统,玖伍系统,亿乐系统,各大卡盟系统,网商系统等对接商品价格支持

    2022年8月12日
    3
  • jenkins教程

    jenkins教程最近接了公司的挺多运维的活,刚开始很新鲜,后面天天部署各种项目的测试环境和生产环境,加上每个项目n个服务,我就变成了骚是骚,就是太累了。于是我想到了之前一直想用的jenkinsjenkins的作用和它的图标表现出来的一样,就是为了做工作的时候,能够比较轻松,像一个绅士一样游刃有余。一、安装1、进入官网,找到download找来找去,在最下面有个.war因为我是做…

    2022年5月15日
    39
  • java单例模式_Java单例模式

    java单例模式_Java单例模式单例(Singleton)模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。这种模式涉及一个类,它负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化类的对象。实现实例我们将创建一个单一对象类-SingleObject。单个对象(SingleObject)类的构造函数是私有的,…

    2022年7月8日
    22
  • Proteus使用教程并仿真51程序——LED流水灯

    Proteus使用教程并仿真51程序——LED流水灯目录一、安装Proteus软件二、熟悉Proteus软件三、51程序设计和仿真四、总结五、参考资料Proteus是LabCenterElectronics公司推出的一个EDA工具软件。Proteus具有原理布图、PCB自动或人工布线、SPICE电路仿真、互动电路仿真、仿真处理器及其外围电路等特点功能。一、安装Proteus软件下面来了解下如何安装Proteus软件,安装过程也十分简单。首先需要下载Proteus的压缩包,链接如下。链接:https://pan.baidu.com/s/1e

    2022年5月10日
    51

发表回复

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

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