データベース内のデータが混在している場合がありますが、これが解決可能な問題であるかどうかを確認しようとしています。私が持っているのは、次の3つの形式のいずれかの部分的なURLです。
/some/path?ugly=häßlich // case 1, Encoding: UTF-8 (plain)
/some/path?ugly=h%C3%A4%C3%9Flich // case 2, Encoding: UTF-8 (URL-encoded)
/some/path?ugly=h%E4%DFlich // case 3: Encoding: ISO-8859-1 (URL-encoded)
アプリケーションに必要なのは、URLエンコードされたUTF8バージョンです。
/some/path?ugly=h%C3%A4%C3%9Flich // Encoding: UTF-8 (URL-encoded)
DB内の文字列はすべてUTF-8ですが、URLエンコードが存在する場合と存在しない場合があり、どちらの形式でもかまいません。
a
プレーンUTF-8をURLエンコードされたUTF-8にエンコードするメソッドがあり、URLエンコードされたISO-8859-1をプレーンUTF-8にデコードするメソッドがb
あるので、基本的には次のようにします。
ケース1:
String output = a(input);
ケース2:
String output = input;
ケース3:
String output = a(b(input));
どちらがどちらかがわかっていれば、これらのケースはすべて正常に機能しますが、そのような文字列がケース2か3かを検出する安全な方法はありますか?(パラメータで使用される言語をヨーロッパ言語に制限できます:ドイツ語、英語、フランス語、オランダ、ポーランド語、ロシア語、デンマーク語、ノルウェー語、スウェーデン語、トルコ語、それが助けになる場合)。
明らかな解決策はデータをクリーンアップすることですが、残念ながら、データは自分で作成したものではなく、必要な技術的理解を持っている人もいません(そして、機能する必要のあるレガシーデータがたくさんあります)