文章目录

  • 字符集编码
  • idea解决乱码

字符编码原理

字符集编码

ASCII字符集
共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符。由于总共才128个字符,所以可以使用1个字节来进行编码,我们看一些字符的编码方式:

'L' ->  01001100(十六进制:0x4C,十进制:76)
'M' ->  01001101(十六进制:0x4D,十进制:77)

ISO 8859-1字符集
共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码。这个字符集也有一个别名latin1。

GB2312字符集
收录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容ASCII字符集,所以在编码方式上显得有些奇怪:

  • 如果该字符在ASCII字符集中,则采用1字节编码。
  • 否则采用2字节编码。

这种表示一个字符需要的字节数可能不同的编码方式称为变长编码方式

比方说字符串'爱u',其中'爱'需要用2个字节进行编码,编码后的十六进制表示为0xB0AE'u'需要用1个字节进行编码,编码后的十六进制表示为0x75,所以拼合起来就是0xB0AE75

我们怎么区分某个字节代表一个单独的字符还是代表某个字符的一部分呢?别忘了ASCII字符集只收录128个字符,使用0~127就可以表示全部字符,所以如果某个字节是在0~127之内的,就意味着一个字节代表一个单独的字符,否则就是两个字节代表一个单独的字符。

GBK字符集

GBK字符集只是在收录字符范围上对GB2312字符集作了扩充,编码方式上兼容GB2312。

Unicode字符集

收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容ASCII字符集,采用变长编码方式,
Unicode字符集有多种编码方案,可以采用utf8、utf16、utf32这几种编码方案,utf8使用1~4个字节编码一个字符,utf16使用2个或4个字节编码一个字符,utf32使用4个字节编码一个字符。

对于同一个字符,不同字符集也可能有不同的编码方式。比如对于汉字’我’来说,ASCII字符集中根本没有收录这个字符,utf8和gb2312字符集对汉字我的编码方式如下:

utf8编码:111001101000100010010001 (3个字节,十六进制表示是:0xE68891)
gb2312编码:1011000010101110 (2个字节,十六进制表示是:0xB0AE)

idea解决乱码

在下面两个文件中最后一行加上 -Dfile.encoding=UTF-8

settings-- file encoding

-Dfile.encoding=UTF-8


rebuild

字符集编码 idea解决乱码相关推荐

  1. URL传递中文、Ajax传递中文,Java如何编码如何解决乱码

    地址栏中出现汉字的情况有 两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参.js中 编码有escape(),en ...

  2. ubuntu系统下gedit 打开GBK字符集编码文件出现乱码问题解决办法

    使用 Gedit 打开 Windows 系统下编写的文本文件时,文件的中文全是乱码. 有些在Windows下能够打开的txt文件在Ubuntu下用gedit打开时,中文显示是乱码,这是因为编码方式不同 ...

  3. debian下gedit 打开GBK字符集编码文件出现乱码

    使用 Gedit 打开 Windows 系统下编写的文本文件时,文件的中文全是乱码. 有些在Windows下能够打开的txt文件在Ubuntu下用gedit打开时,中文显示是乱码,这是因为编码方式不同 ...

  4. mysql设置字符集 php_MySQL字符集编码设置与PHP显示乱码的解决办法

    转自:博客水木 http://shuimu.js.cn/mysql-php-character-set-encoding-settings-and-garbled-solution.html PHP显 ...

  5. LInux下centos6.7 设置字符集,解决乱码问题

    设置字符集,解决乱码问题 即修改文件 /etc/sysconfig/i18n echo 'LANG="zh_CN.UTF-8"' > /etc/sysconfig/i18n ...

  6. 动态代理解决网站字符集编码

    1.首先看一个装饰模式解决字符集编码问题 我们使用装饰者对request进行增强,从而使得get和post使用request.getParameter()获得的数据没有乱码: 首先来一个Servlet ...

  7. 邮件编码介绍及乱码的解决

    E-mail一般在传送过程中都要对文件进行编码.这是因为E-mail只能传送ASCII码格式的文字信息.ASCII码为7位代码,非ASCII格式的文件在传送中必须经过编码工具编成相应的A SCII码进 ...

  8. ci框架 乱码 mysql_mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法

    mysql设置utf8_unicode_ci字符集php页面输出??乱码的解决方法 作者:吕海鹏 文章来源:itstudy原创 发表时间:2008-10-18 11:15:08 阅读次数:今日:5 本 ...

  9. smartupload 上传文件时 把页面编码改成gbk 解决乱码

    快来java1234 吧 smartupload 上传文件时,经常会发生因为把表单设置为 enctype="multipart/form-data"而出现的中文乱码问题,本人头疼好 ...

最新文章

  1. phpcms V9判断奇数偶数的实例
  2. SQL-Oracle游标
  3. STL 之adjacent_find, merge,inplace_merge
  4. c语言getch在哪个头文件,用getch()需要头文件吗?
  5. Angular实现dialog对话框封装
  6. android 根据滑动隐藏或显示导航 类似手机QQ好友个人信息
  7. 代码不会骗人,但有时注释会
  8. 计算机真有趣作文,真有趣作文10篇
  9. 被static修饰的map、list GC问题
  10. Paypal快速支付接口参数的含义
  11. 什么是python web
  12. oppoK9Pro游戏性能怎么样
  13. Html设置超链接文字颜色
  14. python安全之Pickle反序列化漏洞学习。
  15. 微信小程序 日期比较,计算天数
  16. 国家集训队1999-2009论文集
  17. 文件上传的http请求类(zip文件)
  18. 数的进制转换:十进制转二进制、十六进制转二进制、二进制转八进制
  19. 众昂矿业刘金海:我国萤石进出口现状解析
  20. 钱塘江涌潮特性及其数值模拟

热门文章

  1. 精通AI、PS、GraphPad、SPSS等软件,轻松制作各种高分论文插图!
  2. oracle可以创建多个数据库实例吗_oracle 一个实例下可以建多个数据库么?
  3. Intellij IDEA中包下建包总在同一级的解决方法
  4. Windows 下手动配置 Nginx 及 PHP-CGI 多进程开机自启方法
  5. 基于ssm的小区物业管理系统
  6. Qt实现简单的计算器
  7. 【知识扩充】—— 360QVM和金山的KSC引擎
  8. 前台商品条码效验算法
  9. 三星使用android auto,如何使用手機的Android Auto連接汽車
  10. 【比特熊故事汇】3月MVP英雄故事——微软MVP与英特尔首席工程师的春日Remix