[Java] 76 カタカナをローマ字に変換 ICU4J

[macOS catalina 10.15.7]

DesktopクラスでHTMLファイルを読み込む際、ファイル名に日本語が含まれているとエラーになります(macOS起因の可能性あり)。その場合はファイル名をエンコードするか、日本語をローマ字に変換して対処します。

調べていたらICU4Jという変換ツールを見つけたのでGitHubからjarファイルをダウンロードして試してみました。C言語版もあります。ICUはInternational Components for Unicodeの略で、このプロジェクトにはMicrosoftの社員が関わっているようです。

注意点としては、長音が含まれるとマクロンという横棒付きになりHTML読み取り時にエラーになります。一旦平仮名に変換してからローマ字に変換すると ā→aa となってうまくいきました。

日本語をエンコードすると意味が分からなくなるので躊躇していましたが、このツールでローマ字化して解決しました。今後も重宝しそうです。

import com.ibm.icu.text.Transliterator;

<中略>

Transliterator transliterator = Transliterator.getInstance("Katakana-Latin");
String name_latin = transliterator.transliterate(name);
System.out.println("競走馬名直接ローマ字 " + name_latin);

Transliterator transliterator2 = Transliterator.getInstance("Katakana-Hiragana");
String name_hira = transliterator2.transliterate(name);
System.out.println("競走馬名ひらがな " + name_hira);

Transliterator transliterator3 = Transliterator.getInstance("Hiragana-Latin");
String name_latin2 = transliterator3.transliterate(name_hira);
System.out.println("競走馬名ローマ字 " + name_latin2);
--------------------------------------------------

出力
--------------------------------------------------
競走馬名直接ローマ字 shafuriyāru
競走馬名ひらがな しゃふりやある
競走馬名ローマ字 shafuriyaaru