java、文字列からアクセント符号を除去する

あらすじ:mysqlの文字列比較がウムラウトだのアキュートアクセントだのあのへんをいっさい無視するがjavaのデフォ文字列比較では区別して扱うためjava的にはユニークな文字列のコレクションを挿入せんとしているところがMySQL的には全然ユニークじゃないためユニーク制約に引っかかり全員が死ぬ

解決法

Normalizer(java6から標準、それ以前ではsun名前空間の下にあったり)でアクセントつき文字をふつう文字+アクセントに分解してからふつう文字以外を置換で除去する方法、は日本語含んでたら怖いので拒否したい。まあ結局は自力で置換しろって話になるみたいですね、なんにせよ。
Unaccent letters - Real's Java How-to

String s = "È,É,Ê,Ë,Û,Ù,Ï,Î,À,Â,Ô,è,é,ê,ë,û,ù,ï,î,à,â,ô";
s = s.replaceAll("[èéêë]","e");
s = s.replaceAll("[ûù]","u");
s = s.replaceAll("[ïî]","i");
s = s.replaceAll("[àâ]","a");
s = s.replaceAll("Ô","o");
s = s.replaceAll("[ÈÉÊË]","E");
s = s.replaceAll("[ÛÙ]","U");
s = s.replaceAll("[ÏÎ]","I");
s = s.replaceAll("[ÀÂ]","A");
s = s.replaceAll("Ô","O");

http://www.rgagnon.com/javadetails/java-0456.html

引用元ページにはテーブル使って高速化する方法も書いてある。

その他

変な字のせいでGDPが下がっている。変な字撲滅!
ちなみにアクセントを無視した文字列比較はCollator使うといけるらしい、詳細調べてない