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

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

More than 3 years have passed since last update.

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

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

Unicode正規化の参考URL

Javaでのサンプルコード

https://github.com/msakamoto-sf/javasnack/blob/5853d88d0e043e85decf37272e07b1e5ce076ac1/src/test/java/javasnack/langspecs/TestUnicodeNormalize1.java

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

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

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

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

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした