java中为啥要用ISO-8859-1编码啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中为啥要用ISO-8859-1编码啊?相关的知识,希望对你有一定的参考价值。

我看好多地方 都是得这么转换一下
new String(names[i].getBytes("GBK"),"ISO-8859-1")
为什么啊...为什么不是utf-8呢 utf-8不是更通用么? gbk 和它有什么联系啊 为什么java默认的编码是gbk 不是8859呢..弄那么多编码有什么用啊 都一种不就得了吗 麻烦啊...

Java使用ISO-8859-1编码是因为这种编码国际上是通用的,可以兼容很多国家的语言编码。我们国家的gbk编码格式是可以换成ISO-8859-1格式的。
国际中通用的还有一种编码格式就是UTF-8能兼容世界上几乎所有的语言,在网络传输为了避免出现乱码,都采用这种编码方式。
参考技术A 这是因为ISO-8859-1不支持中文,直接用的话有中文的地方会显示乱码。因此需要用中文字符集转换一下。当然utf-8就不需要转换了。在eclipse里面你可以设置java的默认字符集的。本回答被提问者采纳 参考技术B ISO8859-1,通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符。
而gb2312是标准中文字符集。
UTF-8 是 UNICODE 的一种变长字符编码,即 RFC 3629。简单的说——大字符集。可以解决多种语言文本显示问题,从而实现应用国际化和本地化。

对系统来讲,UTF-8 编码可以通过屏蔽位和移位操作快速读写,排序更加容易。UTF-8 是字节顺序无关的,它的字节顺序在所有系统中都是一样的。因此 UTF-8 具有更高的性能。

不过如果是纯英文的话,用什么都可以,用GB2312也没问题。
参考技术C 好好看一下编码的东西,java用的是uncode,而不是你说的gbk,gbk是windows的默认编码 参考技术D 当然你可以直接用utf -8 只是因为以前老的浏览器对utf8兼容性不是很好。。。现在一般都用utf8 一致就好

为啥要用base64编码来保存图片?

看到淘宝里的html的样式使用base64来保存图片的?为什么要采取这种方式,好处是什么?是加密吗?如果不采取会怎么样,就是直接用jpg,gif保存

什么是Base64?

按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

为什么要使用Base64?

在设计这个编码的时候,我想设计人员最主要考虑了3个问题:
1.是否加密?
2.加密算法复杂程度和效率
3.如何处理传输?

加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即可。
基于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email,而并不是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。

但是,如果是基于以上两点,那么我们使用最简单的恺撒法即可,为什么Base64看起来要比恺撒法复杂呢?这是因为在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须考虑!所以,单单靠改变字母的位置的恺撒之类的方案也就不行了。关于这一点可以参考RFC2046。
基于以上的一些主要原因产生了Base64编码。
参考技术A Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下。

以上是关于java中为啥要用ISO-8859-1编码啊?的主要内容,如果未能解决你的问题,请参考以下文章

java 中编码解码问题

JDBC iso-8859-1 编码

iso-8859-1 是啥编码

关于java中 get提交方式的乱码问题

java怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串

Windows 上的 UTF-8/ISO-8859-1 编码问题 --> Unix