2016-05-10 5 views
1

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多少手動信じること:

私はこのようなデータを読んでいます私が前記の外部リソースから得たすべてのテキストを正規化しなければならない。

答えて

1

PostgreSQL(および基礎となるオペレーティングシステムのロケールライブラリ)では、これをサポートしていません。データをデータベースに渡す前に、データを正規化するのが最善の方法です。

関連する問題