LoginSignup
31
24

More than 5 years have passed since last update.

文字列のエンコードやデコードで UTF-8、UTF_8、utf-8、UTF8 のどれを指定すればよいかで迷わない方法

Posted at

URLエンコードされている文字列をUTF-8に変換することがあります。

String urlEncodedString = "http://qiita.com/search?utf8=%E2%9C%93&sort=rel&q=%E6%97%A5%E6%9C%AC%E8%AA%9E";
URLDecoder.decode(urlEncodedString, "UTF-8");

という具合に。
このときにURLDecoder.decodeの第2引数にはエンコーディング方式を指定しますが、UTF-8を指定したいときにどのように書けば正解なのか迷うことがあります。

ちなみに、次の4つのうち、指定するとUnsupportedEncodingExceptionになるものがあります。わかりますか?

  • UTF-8
  • UTF_8
  • utf-8
  • UTF8

(もしかすると、Javaのバージョンなどによってどれが動作するかが違うかもしれません。未確認。)

こう書けば迷わない

そもそも私たちが文字列でエンコーディング方式を指定するから、typoや動作するかのチェックに気を使うわけです。
なので、これから私はこのように書こうと思います。

URLDecoder.decode(urlEncodedString, StandardCharsets.UTF_8.name());

StandardCharsets.UTF_8Charset型の定数です。
Charsetnameメソッドで文字セットの名称を取得することができます。
こうすれば私たちがエンコーディング方式をあらわす文字列をタイピングして直接指定しなくてよくなるので、どう書くといいかで迷わなくなります。

31
24
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
24