NGINX POST十六进制内容转中文

凉白开 Nginx525,7261字数 2671阅读8分54秒阅读模式

回到《nginx记录响应与POST请求日志》一问,我们捕获到了nginx post请求的内容以及响应给用户的内容,但是我们可以看到\xE5\xAE\x9E\xE5\x90\x8E\xE5\x86\x8D\xE8\类似的内容,不知何意,接下来我们用php把他给解析出来。

日志内容

以下是上篇内容的日志文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

10.11.11.11 | - | [23/May/2015:11:51:11 +0800] | "POST /ttlsa/api HTTP/1.1" | 200 ~ 519 | "-" | "Apache-HttpClient/4.3.2 (java 1.5)" | "-" | "<xml><appid>10002221</appid><mch_id>78912321</mch_id><device_info>10001</device_info><nonce_str>WhQD62S7mW06uGZb09JHZx78VN6Z9VO7</nonce_str><body>\xE5\xBE\xAE\xE4\xBF\xA1\xE6\x9D\xA1\xE7\xA0\x81\xE6\x94\xAF\xE4\xBB\x98</body><out_trade_no>20150523109755485501108746</out_trade_no><total_fee>20910</total_fee><spbill_create_ip>192.168.1.103</spbill_create_ip><auth_code>130145050921275499</auth_code><sign>8F7C57A99DBA452EFEF685CBE14BE599</sign></xml>" | "<xml><appid>10002221</appid><device_info>10001</device_info><err_code><![CDATA[NOTENOUGH]]></err_code><err_code_des><![CDATA[\xE9\x93\xB6\xE8\xA1\x8C\xE5\x8D\xA1\xE5\x8F\xAF\xE7\x94\xA8\xE4\xBD\x99\xE9\xA2\x9D\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x88\xE5\xA6\x82\xE4\xBF\xA1\xE7\x94\xA8\xE5\x8D\xA1\xE5\x88\x99\xE4\xB8\xBA\xE5\x8F\xAF\xE9\x80\x8F\xE6\x94\xAF\xE9\xA2\x9D\xE5\xBA\xA6\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x89\xEF\xBC\x8C\xE8\xAF\xB7\xE6\xA0\xB8\xE5\xAE\x9E\xE5\x90\x8E\xE5\x86\x8D\xE8\xAF\x95]]></err_code_des><mch_id>78912321</mch_id><nonce_str><![CDATA[PxPXdLScGOhBZ17O]]></nonce_str><result_code><![CDATA[FAIL]]></result_code><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg><sign><![CDATA[F04FE3EEF6B3E1E6962616786A177C22]]></sign></xml>"文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

 文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

我们抓取响应的内容,\xE9\x93\xB6\xE8\xA1\x8C\xE5\x8D\xA1\xE5\x8F\xAF\xE7\x94\xA8\xE4\xBD\x99\xE9\xA2\x9D\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x88\xE5\xA6\x82\xE4\xBF\xA1\xE7\x94\xA8\xE5\x8D\xA1\xE5\x88\x99\xE4\xB8\xBA\xE5\x8F\xAF\xE9\x80\x8F\xE6\x94\xAF\xE9\xA2\x9D\xE5\xBA\xA6\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x89\xEF\xBC\x8C\xE8\xAF\xB7\xE6\xA0\xB8\xE5\xAE\x9E\xE5\x90\x8E\xE5\x86\x8D\xE8\xAF\x95。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

编写php文件

大体流程,我们通过参数s传值给php,php首先将\x去掉,将字符串变成完成的十六进制,最后将十六进制转为中文。文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

<?php
function hexDecode($s) {
 $s = str_replace('\x','',$s);//先把\x去掉,变成完整的十六进制
 return preg_replace('/(\w{2})/e',"chr(hexdec('\\1'))",$s);//十六进制转为汉字
 }
 $s = $_GET['s'];
 $hexEncode =  hexEncode($s);
?>

 文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

测试

网址输入:https://www.ttlsa.com/t.php?s=\xE9\x93\xB6\xE8\xA1\x8C\xE5\x8D\xA1\xE5\x8F\xAF\xE7\x94\xA8\xE4\xBD\x99\xE9\xA2\x9D\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x88\xE5\xA6\x82\xE4\xBF\xA1\xE7\x94\xA8\xE5\x8D\xA1\xE5\x88\x99\xE4\xB8\xBA\xE5\x8F\xAF\xE9\x80\x8F\xE6\x94\xAF\xE9\xA2\x9D\xE5\xBA\xA6\xE4\xB8\x8D\xE8\xB6\xB3\xEF\xBC\x89\xEF\xBC\x8C\xE8\xAF\xB7\xE6\xA0\xB8\xE5\xAE\x9E\xE5\x90\x8E\xE5\x86\x8D\xE8\xAF\x95文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

输出结果如下:文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/

nginx post

十六进制转中文

文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/文章源自运维生存时间-https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/
weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
凉白开
  • 本文由 发表于 28/05/2015 09:54:56
  • 转载请务必保留本文链接:https://www.ttlsa.com/nginx/nginx-post-hex-to-chinese/
  • nginx post
评论  5  访客  5
    • 匿名
      匿名 9

      提交的是gz包可以解吗

      • liuchongs
        liuchongs 9

        echo -e 就可以

        • 请教
          请教 9

          通过参数s传值给php,这步骤需要在nginx自定义变量s 然后fastcgi_param 给php?

          • qkt
            qkt 9

            这不应该说是PHP16进制转中文吗

              • 凉白开
                凉白开 9

                @ qkt ^_^,是的

            评论已关闭!