Help us understand the problem. What is going on with this article?

UTF-8の文字列のバイト列を取得する

基本的なことですが、「あ」をUTF-8で表現すると 0xE3 0x81 0x82 となります。エンジニアの皆さんならこの程度は暗記しているでしょうが、私はどうも記憶力が鈍ってきたので忘れがちです。

というわけで、任意の文字列(ここでは「あいう」とします)をUTF-8で表現したときのバイト列を16進数で取得する方法について、思い付くものを適当にまとめました。実用性があるものもないものも含め、何か他にあるようでしたらコメントで教えてください。

Ruby

"あいう".unpack("H*") # ["e38182e38184e38186"]

Python3

"あいう".encode() # b'\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86'

JavaScript

encodeURIComponent("あいうABC") // '%E3%81%82%E3%81%84%E3%81%86ABC'

encodeURIComponent() はUTF-8を使うと規定されているのでこれが使えます。ただしASCII文字の大半はそのまま出てきます。

PowerShell

> [System.Text.Encoding]::UTF8.GetBytes("あいう") | % { "{0:x}" -f $_ }
e3
81
82
e3
81
84
e3
81
86

その他

$ echo 'あいう' | od -t x1
0000000 e3 81 82 e3 81 84 e3 81 86 0a
0000012

環境依存かもしれません(自信がありません)

netebakari
Web開発、TypeScript、AWSあたりを中心に書いたり読んだりします。
https://github.com/netebakari
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away