LoginSignup
6
10

More than 5 years have passed since last update.

参考メモ/Java6からのUnicode正規化(java.text.Normalizer)による全角英数記号と日本語特殊文字の変換メモ

Posted at

Javaで以下のような変換を行いたかったので、Java6からのUnicode正規化(java.text.Normalizer)を試してみたので参考URLなどのメモです。

  • 全角英数記号を半角英数記号に。
  • 一文字にまとまった「(株)」とか「平成」「昭和」などの年号、「ミリ」や「キロ」などを、ばらばらの全角文字に。
  • Windows/Macそれぞれで入力された濁音・半濁音のかな/カナを、揃えたい。

Unicode正規化の参考URL

Javaでのサンプルコード

今回の用途で最適だったのはNFKC

今回の用途で最適だったのはNFKC(互換分解とそれに続く正規合成, Normalizer.Form.NFKC)でした。
サンプルコードからの以下の結果がポイントでした。

  • 1文字の全角文字「が」「ぱ」「っ」などは変わらない。
  • 「か」+濁音などの組み合わせもそのまま変わらない。
  • 半角カナ + 濁音などの組み合わせは、相当する1文字の全角文字に変換してくれる(「ヴ」など)。
  • 全角英数記号を相当する半角英数記号に変換してくれる。
  • 可能なかぎり、丸文字や年号・単位・ギリシャ数字などの1文字を、相当する複数の文字に分解してくれる。

扱う文字列が、記号などかなりの率で混在する上に、Windows/Macでそれぞれ入力された濁音・半濁音のかな/カナ文字が混在してくるデータだったので、互換分解した後に正規合成するNFKCが(多分)正規化して「揃える」のには一番適してるのではないでしょうか。

6
10
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
6
10