2016-07-08 40 views
0

我的數據庫運行在Postgresql 9.3上,應用程序本身在Apache Tomcat 8.5.3上運行。涉及的應用程序是PopCommerce。使用搜索時使用搜索時處理重音字符不正確(在Moqui的PopCommerce中)

數據庫使用UTF8編碼:

 

    Name | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+----------+-----------+---------+-------+------------------------ 
moquidb | postgres | UTF8  | C  | C  | 

我並沒有改變默認設置(關於語言環境)上的任何服務器,無論是數據庫服務器,也不是Apache的。

當前的應用程序行爲令人困惑。我導入了我的客戶的供應商名單(mantle.party.Party + mantle.party.Organization),所有這些都使用斯洛伐克語,並帶有重音字符 - á,š,č,ž等。一切看起來都很好,直到我開始使用搜索FindSupplier屏幕(以及其他地方)。

讓我們假設我想找到供應商有organizationName開頭字母'Hús'。我寫的字符串「HUS」到名稱文本找到(輸入框)後,打查找按鈕,一個新的屏幕,在名稱盒不正確的文本呈現 - 「Hús」。字母'''被替換爲'Ã'。當然沒有搜索結果。

設置數據庫和應用程序服務器以支持重音字符的正確方法是什麼?

在我的帶有嵌入式數據庫的筆記本上開發和運行Moqui時,沒有發生過這種情況。我懷疑應該更改服務器上的設置。任何幫助讚賞。

+0

看起來這是PostgreSQL和/或Apache Tomcat服務器的配置不正確的問題。當我在同一主機上運行應用程序但在獨立容器中(加載了相同的數據)時,問題不會發生。 – mrovnanik

回答

1

希望這可以幫助任何面臨類似問題的人。就我而言,這些步驟幫助我走出了困境。我能夠確定的第一件事情是,它是導致行爲的Tomcat服務器。當我在一個Servlet(獨立模式)中對付同一個數據庫時,Moqui沒有發生問題。

所以我修改了Tomcat的配置,以確保,通信(特別是服務器的響應)編碼usign UTF-8:

  1. 集的URIEncoding對服務器的連接器標籤=「UTF-8」。 xml(conf/server.xml) - >簡單地添加一個屬性到現有的配置中,
  2. 打開setCharacterEncodingFilter on - 編輯web.xml(conf/web.xml),有一個註釋標記(在Tomcat 8.5版本中在web.xml中是在第465行左右)。檢查Stackoverflow上其他線程中描述的配置(請參閱下面的第二個鏈接以獲取更多詳細信息)。

這些人的來源對我來說:

https://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3

Tomcat 7 org.apache.catalina.filters.AddDefaultCharsetFilter not using UTF-8

+0

請[接受你的回答](http://meta.stackexchange。com/questions/5234/how-does-accepting-an-answer-work)如果它解決了你的問題。 –

相關問題