首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再谈java乱码GBKUTF-8互转尾部乱码问题分析

用ISO-8859-1中UTF-8数据 设想一个场景: 用户A,有一个UTF-8编码的字节流,通过一个接口传递给用户B; 用户B并不知道是什么字符集,他用ISO-8859-1来接收,保存; 在一定的处理流程处理后...字符串:用户 6 转成ISO-8859-1会乱码:用户 数据没有丢失:用户 用GBK中转UTF-8数据 重复前面的流程,将ISO-8859-1 用GBK替换。...; System.out.println("转成GBK乱码:"+str2); //将GBK编码的unicode字符串转回为byte[] byte[] byteArray2=str2.getBytes...运行结果: unicode字符串:用户 6 转成GBK乱码:鐢ㄦ埛 数据没有丢失:用户 好像没有问题,这就是一个误区。...ISO-8859-1测试结果: unicode字符串:用户名 9 转成GBK乱码:用户名 数据没有丢失:用户名 GBK 测试结果: unicode字符串:用户名 9 转成GBK乱码:鐢ㄦ

3.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    再再谈java乱码GBKUTF-8互转尾部乱码问题分析(续)

    在《再谈java乱码GBKUTF-8互转尾部乱码问题分析》我们分析了,如果从一个UTF-8 的字节序列,经过 new String(b,"GBK") 的操作,"可能"(与总字节数有关)会破坏数据。...同时,可参考:一段java代码带你认识锟斤拷 GBK字节码用UTF-8解码 来看一段代码: public static void main(String[] args) throws IOException...例子中的三个汉字,用UTF-8 一次为什么不是意料中的9字节,而是14个字节呢? 我们把代码改一下,打印一下二进制。...小结 先回顾一下前文的结论: 对于任意字节流,使用ISO-8859-1 转为字符串再转回来,是安全的;使用GBKUTF-8可能会破坏数据。...现在扩展一下,使用GBK可能会破坏数据,损失最后一个字;如果使用UTF-8 可能损失大部分的字。 但这绝不是说UTF-8 是不好的,而是在这个乱码问题出现的时候,UTF-8是最惨烈的。

    2.3K30

    Python中文乱码问题(

    --》File and CodeTemplates模块里加入下面的语句: #-*-coding:utf-8-*-  __author__ = '$USER'  4、文件中所有的字符串前都加u,如 u"中文..." 注意:#-*-coding:utf-8-*- 一定要在第一行 ,可以是#encoding=utf-8 或者#coding=utf-8 ;            对中文来说,常见的就是utf-8和cp936...# -*- coding: utf-8 -*- ——文件中所有的字符串前都加u,如 u"中文" ——在输入(抓取某些utf-8/gbk的网页)、输出(输出到网页、终端)时,要记住python内部是用Unicode...存储的 ——所有输入要先decode,变成unicode,输出时要encode变成想要的编码(MacOS X/Linux下输出为utf-8,Windows下输出为gbk,但如果是在pycharm自己的控制台下的话...,windows下输出为utf-8也可以正常显示) ——还有其他很多种古老的解决方案,比如统一用gbk,比如中转编码不用unicode,而用utf-8,等等。

    2K20

    UNICODE,GBK,UTF-8

    UNICODE,GBK,UTF-8 UNICODE,GBK,UTF-8     简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的...来组织的,如果GBK要UTF-8必须先uncode码,再utf-8就OK了....从ASCII、GB2312到GBK,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。...区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。 2000年的GB18030是取代GBK1.0的正式国家标准。...如果他使用了0x80-0xff之间的字符,中文Windows又按照缺省的GBK去解释,就会出现乱码

    2.6K20

    Unicode,GBKUTF-8

    但如果有人问你,“Unicode,GBKUTF-8有什么区别?”, 你能自信地给他一句简短清晰的回答吗? 如果不能的话, 那还是看一下这篇文章吧....('utf8').decode('gbk') 浣犲ソ 如上面的代码所示, “你好"两个汉字字符的unicode分别为4f60和597d, utf-8编码后占6个字节, 而gbk编码后占4个字节....注: 本文的python代码示例是在Linux Terminal下运行的, 因此默认为utf-8编码, 如果你是在Windows cmd里运行, 则通常默认GBK编码, 因此乱码会在不同地方出现:)...知道字符编解码的用法之后,我们就可以解释一下常见的一些乱码由来了, 比如在Windows下,未初始化的栈会初始化为0xcc, 未初始化的堆内存会初始化为0xcd, 可以看到前者为’烫’的gbk编码,而后者正好为...后记 说了这么多, 现在让我们回到一开始的问题, 如果有人问你"Unicode,GBKUTF-8有什么区别?”

    1.5K20

    python json 编码_python乱码中文

    参考书籍:Python网络爬虫从入门到实践 by唐松 在python 2或者3 ,字符串编码只有两类 : (1)通用的Unicode编码; (2)将Unicode转化为某种类型的编码,如UTF-8GBK...,两个字节代表一个中文汉字 ,理论上256*256个编码,即可表示65536种中文字; 各国编码不同,为了各国能扩平台进行文本的转换与处理,Unicode就被作为统一码或者单一码。...(3)中文存入txt f=open('net_saving_data.txt','w',encoding='utf-8'); for item in all_house: # house_area...-8’参数,即可对 txt进行中文写入。...NOTE 中文写入txt、json文件是无非就是open()文件时,需要添加utf-8,dump()时,需要添加ensure_ascii=False,防止ascii编码,但是刚开始因为python版本是

    1.6K20

    简述 ascii、unicode、utf-8gbk 的关系

    每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。 互联网的普及,强烈要求出现一种统一的编码方式。...UTF-8就是在互联网上使用最广的一种Unicode的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。...UTF-8中,英文占一个字节,中文占3个字节。...由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。windows默认编码GBK中文占2个字节。  ...比如,“李杰”,在  utf-8中,一个英文占一个字节,一个中文占3个字节,此处“李杰”占6个字节。GBK中一个中文占2个字节,此处“李杰”占4个字节。

    1.8K10

    彻底搞懂 python 中文乱码问题

    中文乱码实例讲解 我们来说说 Python 中是如何存储字符的,先来看一个乱码的例子。新建一个 demo.py 文件,文件存储格式为utf-8文件中内容如下。...3、把中文强制转换为GBK或者unicode编码 强制转换为unicode编码,在 Python 中编码是可以互相转换的,比如从utf-8换为gbk,不同编码之间不能直接转换,需要通过unicode字符集中间过渡下...强制转换为gbk编码,上一步已经从utf-8换为unicode了,从unicode是编码的过程,通过encode实现。...中文乱码的出现都是由于编码不一致导致的,存储的是用utf-8,打印的时候用gbk就会乱码了,所有要保证不乱码尽量保持统一,建议全部使用unicode。...相等陷阱 “中文”这两个字符串用不同的编码存储是不一样的,utf-8编码和gbk编码存储的“中文”都不一样。 ? 总结 一口气说了这么多,不知道你们看懂没?想要不乱码,记住以下5点法则就好。

    11.5K40
    领券