株式会社CINC 開発本部(旧:開発部) エンジニアブログ

開発部→開発本部!!ビッグデータ取得/分析・自然言語処理・人工知能(AI)を用いた開発を軸に、マーケティングソリューションの開発や、DX推進を行っている、株式会社CINCの開発本部です。

macで手元でunicodeのエスケープシーケンスを日本語に直したい

macで手元でunicodeのエスケープシーケンスを日本語に直したい こんにちは、CINC開発本部です。

皆さん、こんな経験ありませんか?

デバッグ中にログやエラーメッセージを見ていると、突然

\u30c6\u30b9\u30c8

\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88

のような謎の文字列が出てきて「これ、一体何て書いてあるんだ...」と頭を抱えること。

そんな時にサクッと変換できる方法を見つけたので共有します。

Pythonの書き方をすぐに思い出せなくて調べていたところ、実は普段何気なく使っているzshのechoコマンドで簡単に確認できることが分かりました。

内容

UTF-8の文字列が \u30c6\u30b9\u30c8 の様なunicodeのコードポイントや \xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88 の様な16進のバイトシーケンスで出力されていて、ぱっと見わからないので変換したいという時に、手元の環境にzshが入っていればechoコマンドで直ぐ確認できます。 (今のmacインタラクティブシェルはデフォルトでzshになっている。)

# unicodeのコードポイントの場合
$ echo "\u30c6\u30b9\u30c8"
テスト

とか

# 16新数のバイトシーケンスの場合
$ echo "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88"
テスト

の様に、対象文字列をechoで出力してやるだけで元の文字列を確認できます。

感想

pythonなんかのREPL使うのが手っ取り早くはあるのですが、普段からpythonを触っていないととっさに

b"\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88".decode("utf-8")

みたいな書き方を思い出せず、調べたりしてしまうため、単に日本語の出力が知りたいだけであれば、echoだけでも変換出来る事を知っておくと楽かもしれません。

とはいえ、逆の変換が必要になってくると、zshだけでやろうとすると色々と組み合わせる必要が出てきて手間なので、そうなってきたらREPLで対応するほうが早いかと思います。