diacreticsでUTF-8でXML文書を受信しています。分解されたユニコードを外部ソースから処理してpostgresqlに格納する方法
これまでは、値を読み込んだ後、変更や変換を行わずに値を読み込んでpostgreSQLデータベースに保存しました(psotgreSQLパラメータ:SERVER_ENCODING = UTF8、LC_COLLATE = German_Germany.1252)。 、私は以前に外部リソース「Wüsteから挿入された値を見つけることができません:
は、今私は手動で( 73 74 65 BC 57 C3 HEX)でそれを入力して「Wüste」のような値を検索するときにすることを発見しました"(HEX:57 75cc 88 73 74 65)。
2つの文字列がNotepad ++ HexEditorで表示されているのと違っていることがわかります。
私はこの問題に対する正しい解決策を見つけようとしています。
現在、私はjava.text.Normalizerを使用して試してみて、このような外部ソースから、それを読んだときにテキストを正規化するために試してみた:
String normalized = Normalizer.normalize(original, Normalizer.Form.NFC);
しかし、その前に、私は確認したいのですが他に何かを忘れないでください。おそらく私は可能性がありますし、外部ソースからデータを読み取っている間、この問題に既に対処する必要がありますか?多分私は正しいエンコーディングを提供する必要がありますか?たぶん私が設定できる別のパラメータがあるので、自分で正規化を行う必要はありませんか?
URL url = new URL(buildSearchUrl(searchCriteria, key));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
String expression = "/s:searchRetrieveResponse/s:records/s:record/s:recordData";
DocumentBuilder db = dbf.newDocumentBuilder();
InputStream is = url.openStream();
Document dnbResultDocument = db.parse(is);
Node recordDataElem = (Node) xpath.compile(expression).evaluate(
dnbResultDocument, XPathConstants.NODE);
私はその後、私はそれを見つける異なるノードを読み取り、そのテキスト値を取得 element.getTextContent()
を使用して進める
種類のハードそのI多少手動信じること:
私はこのようなデータを読んでいます私が前記の外部リソースから得たすべてのテキストを正規化しなければならない。