zoukankan      html  css  js  c++  java
  • linux shell下16进制 “uxxxx” unicode to UTF-8中文

    问题出现背景:

      项目中有个通过ip获取归属地城市需求,我是直接通过新浪的ip归属查询接口来获取的。我使用的是shell脚本调用

      RESULT=$(curl -s 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=119.137.53.145')

      返回json格式的值:

     var remote_ip_info = {"ret":1,"start":-1,"end":-1,"country":"u4e2du56fd","province":"u5e7fu4e1c",
                        "city":"u6df1u5733","district":"","isp":"","type":"","desc":""};

     我使用awk截取到city的是为"u6df1u5733"的16进制的unicode编码。
    但是在把"u6df1u5733"转为中文的时候遇见了麻烦,百度上搜索到的方法是用iconv来转换成utf-8中文,但是这些方法都没有效果。
     可能iconv 只是把字符转成其他字符集的字符,而"u6df1u5733"是中文"深圳"在unicode的汉字16进制编码表中的位置,
    所以要使用iconv要转换的话,需要先把"u6df1u5733"解码成汉字"深圳",然后再转换成其他utf-8、gbk、gb2312等编码方式。
    iconv好像没有解码这个功能。


    解决方案:
      花了大量时间后在stack voerflow网站上找到了解决方法。
      1、安装一个uni2ascii-4.15-1.el6.rf.x86_64.rpm
      下载地址:http://download.csdn.net/download/oshuyu/9999900
      2、然后可以使用ascii2uni命名转换
      # echo 'u6df1u5733' | ascii2uni -a U -q
      # 深圳
      
      
  • 相关阅读:
    转:五年java人的一点感悟
    6:ZigZag Conversion
    5:Longest Palindromic Substring
    4:Median of Two Sorted Arrays
    3:Longest Substring Without Repeating Characters
    读写分离
    docker swarm部署spring cloud服务
    kubeadm方式安装kubernetes
    《Spring Boot 实战》随记
    https部署
  • 原文地址:https://www.cnblogs.com/lisuyun/p/7601524.html
Copyright © 2011-2022 走看看