当前位置: 首页 > news >正文

有没有一起做游戏棋牌网站的wordpress企业类模板

有没有一起做游戏棋牌网站的,wordpress企业类模板,阿里云服务器可以访问国外网站吗,衡阳市建设协会网站1.了解String与byte之间存在的字符编码映射规则(java为例) string与byte来回转换,需要指定一样字符编码规则 详细原因请参考:关于Java中bytes到String的转换-阿里云开发者社区 简单来说 (1)string和by…

1.了解String与byte之间存在的字符编码映射规则(java为例)

string与byte来回转换,需要指定一样字符编码规则

详细原因请参考:关于Java中bytes到String的转换-阿里云开发者社区 

简单来说

(1)string和byte转换之间需要指定字符编码参数Charset.defaultCharset(),默认不指定的情况下,使用的是utf-8编码,所以一般情况下相互转换使用的都是同一种编码utf-8,byte和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数据到redis,redis底层只存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.yayakq.cn/news/549692/

相关文章:

  • 自己如何建设一个彩票网站网址推广主要做些什么内容
  • 嘉兴网站托管iphone开发网站
  • 海门市规划建设局网站学习网站建设0学起
  • 做外贸的如何上国外网站自定义图片 wordpress
  • iis安装好了 网站该怎么做seo优化方案策划书
  • 网站做多少屏合适1卡二卡三卡四卡精品hd
  • 建一个网站需要什么流程株洲seo优化
  • 网站建设织梦源码wordpress修改侧边栏
  • 建网站和软件需要什么可以做婚礼视频的网站有哪些
  • 建设部网站查询wordpress 页面显示分类文章列表
  • 深圳网站搭建wordpress新增标题
  • 网站源码小千个人网怎样制作灯笼
  • 如何建立一个网站收会员费义乌做网站的
  • 设计素材网站线上排名好的成都网站建设
  • 株洲做网站建设兰州做网站 东方商易
  • 廊坊网站备案东莞通网上营业厅
  • 电子商务网站建设软件选择个人网站建设价格表
  • seo顾问服务公司站长wordpress获取页面tag
  • 杭州设计企业网站高端公司电子商务网站建设定义
  • 库存网站建设公司装饰公司网站建设
  • 网站建设 收费明细高端网站制作乐是
  • 做简历网站高端大气的网站首页
  • 怎样健建设一个有利于优化的网站如何做网站答题领红包链接
  • 网站排名诊断产品单页网站
  • 建站 哪个网站系统好用做网站虚拟服务器
  • 做网站采集担保公司发展规划
  • 有关毕业设计的网站北京百姓网免费发布信息
  • 黑龙江建设网网站一体化平台爱站关键词挖掘old
  • 盐城网站建站中国联通 腾讯
  • 临沂吧网站建设山东钢铁股份有限公司莱芜分公司