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

德阳市网站建设_网站建设公司_ASP.NET_seo优化

婚庆公司网站设计,深圳市官方网站开发公司,网络广告的概念,重庆建设工程信息网官网官方昨天從FB下載了一份包含所有對話紀錄的JSON檔#xff0c;但裡面的中文字編碼有問題#xff0c;通通變成下面這個樣子 \u00e7\u0094\u009f\u00e6\u0097\u00a5本來想說這種事情應該很簡單#xff0c;就把他每個字元當成char轉存不就得了#xff0c;結果轉出來的東…昨天從FB下載了一份包含所有對話紀錄的JSON檔但裡面的中文字編碼有問題通通變成下面這個樣子 \u00e7\u0094\u009f\u00e6\u0097\u00a5本來想說這種事情應該很簡單就把他每個字元當成char轉存不就得了結果轉出來的東西從網頁上看還是一團亂碼… 錯誤的嘗試 既然轉換之後仍然是亂碼那至少代表這個編碼不是utf-8那會不會是big5或其他現在比較少看到的編碼呢所以我試著切換 html 檔的 charset但仍然得到錯誤的結果 çæ¥å¿«æ¨å //這到底是什麼鬼東西整理思路 後來注意到一件小事情是他所有的16進位資料都是\u00開頭或許意味著只有後兩位有意義於是我把字頭全部取代後得到下面的結果 E7 94 9F E6 97 A5這東西看起來很像是在使用記憶體修改器會看到的東西於是我稍微有思緒了他實際上應該是byte[]。也循線找到了網站測試證明了我的想法是正確的 Hex decoder: Online hexadecimal to text converter byte array to string 搞懂他到底是什麼編碼格式之後就是要開始寫轉檔程式了總不能一行一行貼上去面的網站翻譯吧在 stackoverflow 上有這麼一篇提問How to convert UTF8 string to byte array? 下方的解答有人分享了轉換的規則 多位元組的情形下第一個位元組前面1的數量即代表該字元所需要的位元組數量。扣除這個資訊所占用的位元後剩下的位元即為資料區塊後面接著的延續位元組其格式固定為10字頭後面的六個位元為資料區塊將所有的資料區塊全部拼起來即為utf-8碼 以我上面分享的第一個字為例子 前三碼E7 94 9F轉成二進制的資料呈現以下的樣子 11100111 10010100 10011111第一組前面有3個1代表這個字要用到三個位元組扣除記錄這個資訊的區塊後剩下的00111即為第一塊資料區第二組為延續位元組其前兩碼固定為10後面的010100即為資料區第三組為延續位元組其前兩碼固定為10後面的011111即為資料區三組資料全部拼起來00111010100011111就是這個字的 utf-8 碼把這個二進制資料轉回 int 後再轉成 char 就會看到正確的中文字了 String.fromCharCode(parseInt(00111010100011111,2)) //生寫成程式 最後就是把上面的邏輯寫成程式碼了 function hex2a(hexx) {var hex hexx.toString();//force conversionvar str ;for (var i 0; (i hex.length hex.substr(i, 2) ! 00); i 2)str String.fromCharCode(parseInt(hex.substr(i, 2), 16));return str; }function decode(text) {if (!text)return ;//string to byte[]let byteArr [];for (let i 0; i text.length; i) {byteArr.push(text.charCodeAt(i));}let str ;for (let i 0; i byteArr.length;) {let binary byteArr[i].toString(2);let head binary.match(/^1?(?0)/);if (head binary.length 8) {//該字元需要幾個位元組let bytesLength head[0].length;//第一個位元組的實際資料區 let body binary.slice(bytesLength);for (let j 1; j bytesLength; j) {//組合資料body byteArr[i j].toString(2).slice(2);}str String.fromCharCode(parseInt(body, 2));i bytesLength;} else {str String.fromCharCode(byteArr[i]);i;}}return str; }aadecode(\u00e7\u0094\u009f\u00e6\u0097\u00a5); // returns 2460console.log(aa) view rawbyte-array-to-string.js hosted with ❤ by GitHub 後記 好久沒有碰到需要直接操作位元的問題大學修的計概都還給教授了Orz組資料的地方如果可以直接用跟進行位元計算性能應該會比字串處理提升很多改天再來修改程式碼吧。實測發現emoji轉不出來 任何程序错误以及技术疑问或需要解答的请添加
http://www.lebaoying.cn/news/58511.html

相关文章:

  • 服务器上配置网站大学网页设计课程
  • 惠阳住房与规划建设局网站软件工程工业软件好吗
  • 番禺人才网招聘信恿西安全网优化
  • 网站建设心得体会及总结甘露园网站建设
  • 网络营销与直播电商专业学什么就业方向是什么郑州百度网站优化
  • 中国银行建设网站首页上海关键词优化软件
  • 连云港企业做网站高清免费观看电视网站
  • 一个完美的网站怎么做广州餐饮品牌设计公司
  • 网站优化包括哪些建设主题网站的顺序是什么样的
  • 模板搭建网站淄博百度推广
  • 微信做引流网站网站推广 昆明
  • 同城配送网站建设网站设计项目建设内容
  • 广州app网站开发不建议网站
  • 做视频教学网站如何做网站如何做关键词排名
  • 网站不在首页显示出来吗html5响应式布局网站
  • 高端网站建设设计公司哪家好西安市规划建设局网站
  • 百度网盘怎么做网站wordpress 海 主题
  • 建设厅里网站查不到外地施工单位个人网站怎么样的
  • 珠海网站哪家好3d建模软件下载
  • ppt做视频的模板下载网站有哪些内容做试用的网站
  • 2015微信网站开发软件开发外包能学到技术吗
  • 建设银行投诉处理网站电子商务网站的特点
  • 锦州企业网站建设东莞软件外包公司
  • 建设银行官方招聘网站网站建设学习教程
  • dedecms 网站安全如何设置标签wordpress
  • 织梦如何做网站留言功能精准营销名词解释
  • 网站建设业务越做越累网站建设的费用需求
  • 网站建设与维护模板12个优秀的平面设计素材网站的排名
  • 做神马网站温州地区做网站
  • 有哪些网站做的比较好的网站建设页面设计之后