2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

指定した文字列が、対象の文字コードにおいてサポートされているかを調べたい

Posted at

指定した文字列が、対象の文字コードにおいてサポートされているかどうかを調べたい場合、CharsetEncoder.canEncode を利用すると便利です。これは引数として与えられたメソッドが対象の文字コードでサポートされている場合true、それ以外はfalseを返すメソッドで、たとえば文字列sがShift_JISにおいてサポートされているかを調べたい場合は次のように書けばよいです。

String s = "...";
Charset.forName("Shift_JIS").newEncoder().canEncode(s);

実際に動いているかを検証する例として、「髙」という漢字を利用します。いわゆる「はしごだか」ですね。この漢字はShift_JISではサポートされていないのですが、その拡張であるWindows-31Jではサポートされています。これを確かめてみましょう。

Charset.forName("Shift_JIS").newEncoder().canEncode("髙");   //=> false
Charset.forName("Windows-31J").newEncoder().canEncode("髙"); //=> true

想定通り動作していそうですね(´・ω・`)

環境情報:

C:\>javac -version
javac 11.0.3
C:\>java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)
2
0
0

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?