將 \x 開頭編碼的資料轉成中文輸出

在 access.log / error.log 或者某些頁面,有時後會看到 \x 開頭,16進制的字串,要怎麼將這些字串還原回原本的文字呢?

將 \x 開頭編碼的資料轉成中文輸出

\x 這些開頭的,就是 16進制的 UTF-8 中文編碼(大多數是 3 bytes),所以若四個中文字,大多會是 4 * 3 = 12個16進位的字串。

以下是 "生日優惠" 的編碼,用幾種程式語言來解碼呈現

  • PHP
    • <?php echo "\xe7\x94\x9f\xe6\x97\xa5\xe5\x84\xaa\xe6\x83\xa0"; ?>
  • Python 2
    • print "\xe7\x94\x9f\xe6\x97\xa5\xe5\x84\xaa\xe6\x83\xa0".decode('utf-8')
  • Python 3
    • print(b"\xe7\x94\x9f\xe6\x97\xa5\xe5\x84\xaa\xe6\x83\xa0".decode('utf-8'))

相關網頁


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming 並標籤為 , , , , 。將永久鏈結加入書籤。

發表迴響