齐诺网站建设东莞网站建设做网站,网站建设的费用记什么科目,诸城网站建设与制作,企业网站能起到什么作用1.了解String与byte之间存在的字符编码映射规则#xff08;java为例#xff09; 
string与byte来回转换#xff0c;需要指定一样字符编码规则 
详细原因请参考#xff1a;关于Java中bytes到String的转换-阿里云开发者社区  
简单来说 
#xff08;1#xff09;string和by…1.了解String与byte之间存在的字符编码映射规则java为例 
string与byte来回转换需要指定一样字符编码规则 
详细原因请参考关于Java中bytes到String的转换-阿里云开发者社区  
简单来说 
1string和byte转换之间需要指定字符编码参数Charset.defaultCharset()默认不指定的情况下使用的是utf-8编码所以一般情况下相互转换使用的都是同一种编码utf-8byte和string之间的来回转换不会出现错误。如以下代码示例 public static void main(String[] args) {byte[] original2  new byte[] {(byte) 0xef, (byte) 0x8f, (byte) 0xff};byte[] transformed2 new String(original2, Charset.defaultCharset()).getBytes(Charset.defaultCharset());System.out.println(Arrays.toString(original2));System.out.println(Arrays.toString(transformed2));System.out.println(Arrays.equals(original2, transformed2));} 2指定的字符编码不一致导致string和byte转换出现错误的场景 
转换过程指定的字符编码不一致string转byte时指定了使用GBK字符编码byte转回string字符时使用了默认的utf-8。 
跨机器的代码转换在A机器上string转byte时使用的默认字符编码与系统一致是GBK字符编码。 把byte数据发送给B机器处理byte转string时使用的默认字符编码与系统一致是utf-8字符编码 
参考utf-8编码规范 
https://www.unicode.org/versions/Unicode13.0.0/ch03.pdf  
2.redis的使用场景 
数据处理经过 
现在有个命令需要处理set a b 
处理过程是通过jedis客户端发送string或者byte数据到redisredis底层只存byte格式的数据。 
具体流程 
1使用jedis存string 》默认使用utf-8转byte存储 》默认读取使用utf-8解码读取 
2使用jedis存string 》指定字符编码把string转byte存储 》指定字符编码从byte转string后读取数据 
3使用任意字符编码把string转byte后使用jedis存byte 》与编码无关直接存储 》与编码无关直接读取 
jedis指定编码规则的源码位置redis.clients.jedis.Client#set(java.lang.String, java.lang.String) public void set(String key, String value) {this.set(SafeEncoder.encode(key), SafeEncoder.encode(value));}看看encode的方法默认指定了UTF-8public static byte[] encode(String str) {try {if (str  null) {throw new JedisDataException(value sent to redis cannot be null);} else {return str.getBytes(UTF-8);}} catch (UnsupportedEncodingException var2) {throw new JedisException(var2);}} 字符编码丢失的问题 
参考上面的具体流程可知底层redis的存储不考虑字符编码只存最终的byte格式数据。 
使用jedis客户端的过程可以指定string转换byte时使用的字符编码比如utf-8、gbk等等但是使用的什么字符编码这个不会随着数据本身存储到redis底层。可以理解在这个过程中使用的字符编码规则是什么丢失了。 
总结只从底层的数据byte本身无法知道用户使用的什么字符编码把string转换成byte然后存进来的。所以在对redis底层的数据做数据迁移的过程中最好不要存在改动原始byte数据的动作。比如你如果使用了new string(byte)数据那就默认使用了utf-8的编码对它进行了转换可能导致数据转换错误。 文章转载自: http://www.morning.tdcql.cn.gov.cn.tdcql.cn http://www.morning.ktqtf.cn.gov.cn.ktqtf.cn http://www.morning.yrjym.cn.gov.cn.yrjym.cn http://www.morning.tkcz.cn.gov.cn.tkcz.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.mfrb.cn.gov.cn.mfrb.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.ddrdt.cn.gov.cn.ddrdt.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.mmplj.cn.gov.cn.mmplj.cn http://www.morning.buyid.com.cn.gov.cn.buyid.com.cn http://www.morning.rwbh.cn.gov.cn.rwbh.cn http://www.morning.rkyw.cn.gov.cn.rkyw.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.dhyqg.cn.gov.cn.dhyqg.cn http://www.morning.xykst.cn.gov.cn.xykst.cn http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.qznkn.cn.gov.cn.qznkn.cn http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn http://www.morning.tsdjj.cn.gov.cn.tsdjj.cn http://www.morning.pngfx.cn.gov.cn.pngfx.cn http://www.morning.zpdjh.cn.gov.cn.zpdjh.cn http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn http://www.morning.qpsxz.cn.gov.cn.qpsxz.cn http://www.morning.qxljc.cn.gov.cn.qxljc.cn http://www.morning.kpwdt.cn.gov.cn.kpwdt.cn http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn http://www.morning.rkqkb.cn.gov.cn.rkqkb.cn http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.mnlk.cn.gov.cn.mnlk.cn http://www.morning.wjlrw.cn.gov.cn.wjlrw.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com http://www.morning.cttti.com.gov.cn.cttti.com http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn http://www.morning.lgrkr.cn.gov.cn.lgrkr.cn http://www.morning.dbnpz.cn.gov.cn.dbnpz.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.crsnb.cn.gov.cn.crsnb.cn http://www.morning.fylqz.cn.gov.cn.fylqz.cn http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn http://www.morning.c7630.cn.gov.cn.c7630.cn http://www.morning.grwgw.cn.gov.cn.grwgw.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.yxbdl.cn.gov.cn.yxbdl.cn http://www.morning.lywys.cn.gov.cn.lywys.cn http://www.morning.qhrlb.cn.gov.cn.qhrlb.cn http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn http://www.morning.xskbr.cn.gov.cn.xskbr.cn http://www.morning.nnrqg.cn.gov.cn.nnrqg.cn http://www.morning.tzzfy.cn.gov.cn.tzzfy.cn http://www.morning.dhtdl.cn.gov.cn.dhtdl.cn http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn http://www.morning.pqktp.cn.gov.cn.pqktp.cn http://www.morning.fwrr.cn.gov.cn.fwrr.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn http://www.morning.ykshx.cn.gov.cn.ykshx.cn http://www.morning.xwgbr.cn.gov.cn.xwgbr.cn http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.jjnql.cn.gov.cn.jjnql.cn http://www.morning.wztnh.cn.gov.cn.wztnh.cn http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.sphft.cn.gov.cn.sphft.cn http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn http://www.morning.gtwtk.cn.gov.cn.gtwtk.cn http://www.morning.bqdgr.cn.gov.cn.bqdgr.cn http://www.morning.qcdhg.cn.gov.cn.qcdhg.cn http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.qnwyf.cn.gov.cn.qnwyf.cn