首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

java中byte, iso-8859-1, UTF-8,乱码的根源

iso-8859-1正好相当于utf-8的一个单位。...ISO 8859-1 正式编号为ISO/IEC 8859-1:1998,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。...从上图看出 7 个 char 字符经过 ISO-8859-1 编码转变成 7 个 byte 数组,ISO-8859-1 是单字节编码,中文“君山”被转化成值是 3f 的 byte。3f 也就是“?”...很可能就是错误的使用了 ISO-8859-1 这个编码导致的。中文字符经过 ISO-8859-1 编码会丢失信息,通常我们称之为“黑洞”,它会把不认识的字符吸收掉。...这种情况是这样的,ISO-8859-1 字符集的编码范围是 0000-00FF,正好和一个字节的编码范围相对应。这种特性保证了使用 ISO-8859-1 进行编码和解码可以保持编码数值“不变”。

2.9K70

架构师必须掌握的各种编码:ASCII、ISO-8859-1、GB2312...

编码在我们日常开发过程中经常有遇到,常见的编码格式有ASCII、ISO-8859-1、GB2312、GBK、GB18030、UNICODE、UTF-8、UTF-16等,其中GB2312、GBK、GB18030...ISO-8859-1 既然ASCII只能表示128个字符,显示是不能完全表示完的,所以ISO-8859-1扩展了ASCII编码,在ASCII编码之上又增加了西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号...ISO-8859-1也是单字节编码,但它是一个8位的容器,它能表示256个字符。 GB2312 全称为信息交换用汉字编码字符集,是中国于1980年发布,主要用于计算机系统中的汉字处理。...UNICODE 为了自己的语言能在计算机中正常显示,每个国家和地区都有各自的编码,所以编码多了谁也不认识对方的编码,这时候ISO组织就提出了一种新的编码叫UNICODE编码让全球的文化、字符、符号都能支持...所以有了UTF-8,它是UNICODE的一种可变长度字符编码的实现,它可以使用1~6个定长字节来编码UNICODE字符。

2K70

中文编码问题详解

一.常见的编码 ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等 编码格式 表示个数 所需字节数 说明 ASCII 128 单字节的低七位表示 0~31为控制字符如回车换行等...;32~126为打印字符,可键盘输入能够显示出来 ISO-8859-1 表示256个字符 单字节 扩展ASCII码,ISO8859-1ISO8859-15,ISO8859-涵盖大多数西欧语言字符,应用最广泛...2.JS中的编码问题 2.1 js文件编解码 引入的js文件若有中文,和本html页面的编码若不一致则会乱码...中文变成了看不懂的字符 因为字符串解码时使用的字符集和编码字符集使用不一致所导致的.将字符集使用一致即可 2.中文变成了问号,一个中文变为一个问号 因为该字符串经过了不支持中文的ISO-8859-1编码后所出现的问题...-8859-1来解析.设置为true即可.

3K10

一篇文章帮你解决中文乱码问题---JavaWeb中文编码问题全面解析

ISO-8859-1 128个字符显然是不够用的,ISO组织在ASCII码的基础上又制定了一系列标准用来扩展ASCII编码,他们是ISO-8859-1~ISO-8859-15,其中ISO-8859-1涵盖了大多数西欧语言字符...ISO-8859-1任然是单字节编码,它总共能表示256个字符。...按照ISO-8859-1编码 ? ISO-8859-1是单字节编码,中文“君山”被转化成值是3f的byte,3f也就是“?”字符。所以经常会出现中文变成“?”...,很可能就是错误地使用了ISO-8859-1编码导致的。 按照GB2312编码 ?...对header进行解码实在调用request.getHeader时进行的,这个方法将byte到char的转化使用的是ISO-8859-1,不能手动设置Header的其他解码格式,如果有非ASCII字符肯定会有乱码

4.6K40

WEB:字符集、编码、乱码 —— 看这篇就够了

为了表示更多的欧洲常用字符,ISO 组织对 ASCII 进行了扩展,制定了一系列标准来扩展 ASCII 码,他们是ISO-8859-1 ~ ISO-8859-16,其中 ISO-8859-1 涵盖了大多数西欧语言字符...= new String("联通".getBytes("ISO8859-1"), "ISO8859-1"); System.err.println(r1); } 注:ISO8859...-1根本无法表示中文,当然也就无法得到“联通”两字在ISO8859-1中的编码值了,所以再通过new String()还原就更无从谈起了。...ISO 8859-1字符集内的字母(A-Z、a-z)、数字(0-9)、标点符号(* @ - _ + . /)不会被转换; ISO 8859-1字符集内其它字符,都会以%xy格式表示(xy为字符的16进制表示...ISO8859-1字符集内的字母(A-Z、a-z)、数字(0-9)、标点符号( - _ . ! ~ * ' ( ) )不会被转换。

4K20
领券