首页
学习
活动
专区
圈层
工具
发布

再谈java乱码:GBK和UTF-8互转尾部乱码问题分析

解码为一个unicode字符串 String str2=new String(byteArray1,"ISO-8859-1"); System.out.println("转成ISO-8859-1会乱码...String(byteArray2,"UTF-8"); System.out.println("数据没有丢失:"+str3); } 输出: unicode字符串:用户 6 转成ISO-8859-1会乱码...; 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会乱码:鐢ㄦ

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

    再再谈java乱码:GBK和UTF-8互转尾部乱码问题分析(续)

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

    2.8K30

    【YashanDB 知识库】GBK 库,生僻字插入 nvarchar2 字段后乱码问题

    问题现象如下 SQL,插入的人名中有两个 GBK 生僻字和,GBK 编码中没有这两个字符。...into test061 values( '艳梅');insert into test061 values( 'xx艳梅'); //生僻字显示不出来,用xx替换复制代码插入后,客户端 utf8 编码,显示为乱码...用 gbk 和问题的风险及影响客户端和服务端编码不同,服务端是 gbk 时,gbk 生僻字,插入不正常。...utf8 的终端,gbk 的 yasql,gbk 的服务器情况下,插入汉字后, 数据是 utf8 编码,但是当成 gbk 编码转换成 utf16,导致存储的数据不对。...如果客户端是 gbk,nvarchar2 类型的编码转换:UTF16 → gbk相关问题单1、服务端 gbk,nvarchar2 插入 gbk 不识别的生僻字,插入后乱码问题22.2.12.100 GBK

    61810

    YashanDB 知识库|GBK 库插入生僻字乱码?别忽视编码转换这一环

    【问题描述】在 GBK 编码的 YashanDB 数据库中,尝试将包含生僻字的人名插入到 nvarchar2 字段时,出现了乱码或字符丢失的现象。...'粼'); -- 粼 为生僻字插入成功后,在客户端显示为乱码或问号(?)。【问题版本】YashanDB 23.2.4.14 及之前版本【问题成因】1....GBK 编码不支持生僻字GBK 字符集本身对某些生僻汉字不具备编码能力。在终端输入这些字符时,编码器无法完成字符转换,导致实际传入数据为乱码或缺失。2....客户端与服务端编码不一致当客户端编码为 UTF-8.YashanDB 服务端编码为 GBK,yasql 会尝试将 UTF-8 转换为 GBK。...【典型现象】插入生僻字后,在查询时显示为乱码;使用 exp 导出数据时报错,如:YAS-00218 string conversion failed某些空白字符在 GBK 中存在但 UTF-8 无法识别

    51300

    UNICODE,GBK,UTF-8

    UNICODE,GBK,UTF-8 UNICODE,GBK,UTF-8     简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的...按照程序员的称呼,GB2312、GBK都属于双字节字符集 (DBCS)。 2000年的GB18030是取代GBK1.0的正式国家标准。...所谓“错误”是指与文本作者的本意不符,这时就产生了乱码。 答案是Windows按照当前的缺省代码页去解释文本文件里的字节流。缺省代码页可以通过控制面板的区域选项设置。...如果他使用了0x80-0xff之间的字符,中文Windows又按照缺省的GBK去解释,就会出现乱码。...meta http-equiv="Content-Type" content="text/html; charset=ISO8859-1"> 如果原作者使用的代码页和ISO8859-1兼容,就不会出现乱码了

    3.5K20
    领券