ファイル名に則った文字列出力をEUC-JP環境でUTF-8出力するためのTips

ものすごく限定的な状況ですが、

  • サーバの文字コードがEUC-JP
  • AAA_BBB_YYYY_MM_DD.jpg(AAAはカテゴリ、BBBはIDとする)という命名規則に従った画像ファイルがある
  • 画像ファイルの名前から、定型句の説明書きを記述したHTMLパーツ(AJAXによる後読みで使用、UTF-8)を生成したい
    • ssh越しのviでコメントに少なからずマルチバイト文字を含んだ状態なので、UTF-8テキスト流し込みでの生成は誤動作が怖い……
  • 使用するツールはシェルスクリプト(bash)

という想定です。

で、実現させるために書いた検証コードが以下。

#!/bin/bash

# 「AAA_BBB_YYYY_MM_DD.jpg」という命名規則の画像ファイルを対象
img_name='001_001_2019_07_09.jpg';
# 空気配列宣言
declare -a a_dirs=();
# 配列はスペース区切り
# 「_」と「.」をスペースに置き換えたものを配列の丸括弧の中でecho出力することで、一括代入
# 中身は `001 001 2019 07 09 jpg` という形になる
a_dirs=( `echo ${img_name} | tr '_' ' ' | tr '.' ' '` );

# description=`echo "カテゴリ区分:"${a_dirs[0]}", ID:"${a_dirs[1]}" ("${a_dirs[2]}"年"${a_dirs[3]}"月"${a_dirs[4]}"日)"`; ということ
description=`echo "カテゴリ区分:"${a_dirs[0]}", ID:"${a_dirs[1]}" ("${a_dirs[2]}"年"${a_dirs[3]}"月"${a_dirs[4]}"日)"`;

html_content=`cat << EOS
<p class="hoge">${description}</p>
EOS
`

echo "$html_content" > hoge.html;

exit 0;

この方法で実現させました。

……しかし、これかなり限定的な状況よなぁ……。

参考

この記事を書いた人

アバター

アルム=バンド

フルスタックエンジニアっぽい何か。LAMPやNodeからWP、gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。