変数「xxx」に入れた文字列を各文字コードに変換して表示する
#!/bin/bash xxx="あ" enc=("default" "UTF-8" "SHIFT-JIS" "EUC-JP" "ASCII") display() { echo "String \"${1}\" in ${2}:" if [ "${2}" = "default" ]; then echo "${1}" | od -An -tx1 else echo "${1}" | iconv -t "${2}" | od -An -tx1 fi echo "--------------------" } for ((i = 0; i < "${#enc[@]}"; i++)); do display "${xxx}" "${enc[i]}" done
実行結果
String "あ" in default: e3 81 82 0a -------------------- String "あ" in UTF-8: e3 81 82 0a -------------------- String "あ" in SHIFT-JIS: 82 a0 0a -------------------- String "あ" in EUC-JP: a4 a2 0a -------------------- String "あ" in ASCII: iconv: 位置 0 に不正な入力シーケンスがあります --------------------
末尾の「0a」は改行コード「LF」を指す
if文内のehcoに「-n」オプションを付けることで非表示にできる
UTF-8 https://seiai.ed.jp/sys/text/java/utf8table.html
Shift-JIS http://charset.7jp.net/sjis.html