首页
学习
活动
专区
工具
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.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

再再谈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.1K30

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.5K20

简述 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

vs2015:utf-8选项解决UTF-8 without BOM 源码中文输出乱码问题

https://blog.csdn.net/10km/article/details/80203286 本来我已经参考网上关于C++中文输出乱码的文章解决了,如下面的代码输出前调用wcout.imbue...(std::locale(std::locale(), "", LC_CTYPE)); std::wcout << L"江清月近人" << std::endl; 但是同样的方法换在另一个程序中还是输出乱码...虽然都是UTF-8,但是能正确输出中文的源码文件是带BOM头的,另一个是不带BOM的。...参考这个篇文章《MSVC中C++ UTF8中文编码处理探究》搞明白了MSVC对于不带BOM的UTF-8文件,默认会根据本地locale的设置来决定文件的编码(对于简体中文系统,就是GBK)。...所以会对于UTF-8 without BOM的代码文件输出中文就是乱码。对于UTF-8 with BOM文件,会正确将其按照UTF-8来识别。

6K20
领券