几种字符乱码

几种字符乱码其他编码转成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数组输出

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • flask 数据库迁移_数据库迁移方案

    flask 数据库迁移_数据库迁移方案    在开发的过程中,需要修改数据库的模型,而且需要在修改之后更新数据库,最直接就是删除旧表,但是会丢失数据。所有最好的方式就是数据库迁移。它可以追踪数据库模型的变化,然后把变动应用到数据库中。    在flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到flask-Script中,所有的操作通过命令就能完成。Flask-Migrate提供了一个MigrateComma…

  • mysql数据库多表查询练习题[通俗易懂]

    mysql数据库多表查询练习题[通俗易懂]下面练习题中设计四个表。分别为:dept表emp表salgrade表tbyear表1.查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。SELECTd.deptno,d.dname,d.loc,e1.`count(*)`FROMdeptdINNERJOIN(SELECTdeptno,COUNT(*)FROMemp…

  • Android HandlerThread 详解

    Android HandlerThread 详解概述HandlerThread相信大家都比较熟悉了,从名字上看是一个带有Handler消息循环机制的一个线程,比一般的线程多了消息循环的机制,可以说是Handler+Thread的结合

  • spdlog学习笔记

    spdlog学习笔记说明:所有内容翻译自spdlog的wiki,受英语水平所限,有所错误或失真在所难免,如果您有更好的建议,请在博文下留言。线程安全spdlog::命名空间下的是线程安全的,当loggers在不同的线程同时执行时,下述函数不应该被调用:spdlog::set_error_handler(log_err_handler);//orlogger->set_error_handler(…

  • 有什么办法可以实时监控微信_微信被监控有什么特征

    有什么办法可以实时监控微信_微信被监控有什么特征如何同步员工微信聊天记录,员工微信监控管理?这就教你如何操作!企业员工微信怎么更好管理?如何微信监控聊天记录?工作手机管理系统实现员工企业微信聊天全程记录,敏感行为词全程监控,敏感行为监督,私单,飞

  • crm工作机会实体

    crm工作机会实体

发表回复

您的电子邮箱地址不会被公开。

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