linux結構性和漢字編碼
在講linux時允許我講一下我的傷心事由於最近很長時間未學和複習java導致很多的知識點遺忘以至於在做java題目的時候被虐這種感覺你懂的所以我要 要 要 惡補java
顯示漢字庫
我們要層層遞進首先來看以下命令
**echo $1 | sed 's/\(.\)/\1\n/g' | xargs -i bash -c "echo {} | ./zhigher.cmd"**
解析:返回 $1這個參數 通過管道傳遞到下一級 進行換行 再通過管道傳遞到下一級依次將傳遞來的東西
交給 bash -c "echo {} | ./zhigher.cmd"
去執行 echo {} 表示返回的東西 交給 ./zhigher.cmd執行
在linux中xxd命令 就是顯示二進制的命令
在linux中進行編碼的轉換 使用 iconv 命令
echo 學 | iconv -f utf8 -t gbk | xxd
f 表示的是from t 表示的是 to
該命令就是將這個字符 從utf8的編碼轉換爲gbk編碼 並且以二進制的文件顯示
如果不以二進制的文件顯示終端報錯
在linux中將16進制的編碼轉換爲10進制的編碼
我們從上面得到個gbk的區碼和位碼gbk 分爲區碼 和 位碼 我們進行進制的轉換就是兩個區碼和位碼同時
減去 160 (16進制就是 10*16+0)**a0 ** 可以表示16進制即是 d1-a0 和 a7 -a0
echo 學 | iconv -f utf8 -t gbk | xxd | awk '{print $2}'
接下來我講這個代碼:返回學 編碼轉換 將編碼轉換爲2進制 然後取出第二列
echo 學 | iconv -f utf8 -t gbk | xxd | awk ‘{print $2}’ | sed ‘s/(…)/\1\n/g’
該命令講的是 返回學 編碼轉換 將編碼轉換爲2進制 然後取出第二列 然後做區域將字符編碼兩兩換行
echo 學 | iconv -f utf8 -t gbk | xxd | awk ‘{print $2}’ | sed ‘s/(…)/\1\n/g’ | awk ‘{print strtonum(“0x”$1)}’
該命令就講 awk '{print strtonum(“0x”$1)}'
就是將16進制轉換爲10進制
echo 學 | iconv -f utf8 -t gbk | xxd | awk ‘{print $2}’ | sed ‘s/(…)/\1\n/g’ | awk ‘{print strtonum(“0x”$1)}’ | sed 3d | awk '{print $1-160}'
講 **awk ‘{print $1-160}’**它 就是將參數1 就是第一列分別減去160 變爲10進制的區位碼
然後就是這個echo 學 | iconv -f utf8 -t gbk | xxd | awk ‘{print $2}’ | sed ‘s/(…)/\1\n/g’ | awk ‘{print strtonum(“0x”$1)}’ | sed 3d | awk ‘{print $1-160}’ | tr ‘\n’ ’ '
講它 多行變一行
最後就是重量級的來了
echo 學 | iconv -f utf8 -t gbk | xxd | awk ‘{print $2}’ | sed ‘s/(…)/\1\n/g’ | awk ‘{print strtonum(“0x”$1)}’ | sed 3d | awk ‘{print $1-160}’ | tr ‘\n’ ’ ’ | sed ‘s/^/./zlow.cmd /g’ | xargs -i bash -c “{}”
!(C:\Users\86158\Documents\linux結構性和漢字編碼.assets\l3.png)
!(C:\Users\86158\Documents\linux結構性和漢字編碼.assets\l6.png)
該命令是以上所有命令你的結合
!(C:\Users\86158\Documents\linux結構性和漢字編碼.assets\l6.png)
該命令是以上所有命令你的結合
解析:返回學 將字符編碼轉換爲gbk 然後轉換爲二進制 打印出第二行 將第二行的字符以兩兩輸出並換行 然後將16進制轉換爲10進制 將第三行刪除 然後又將10進制的數減去160的到區碼和位碼 然後多行變一行 將行頭的一個字符交給 zlow.cmd去執行 然後一次次的傳遞個 bash -c "{}"執行bin輸出(說是一次次的執行其實在這裏也就執行了一次)