2013-11-26 41 views
0

我試圖解決的問題是: 我們的應用程序的用戶是複製/粘貼來自Windows相關文檔(例如Word)的字符,而我們的應用程序無法識別單引號或雙引號或項目符號。爲什麼我的UTF-8編碼數據不能保留?UTF-8?編碼?

這是我到目前爲止所採取讓這些數據轉化爲UTF格式的步驟:

  1. 內servers.xml,在連接器的標籤,我添加的屬性的URIEncoding =「UTF-8」。

  2. 在存儲輸入的bean中,我創建了一個byte []並在String中傳入並保存inputNote文本,然後將其轉換爲UTF-8。然後將UTF-8轉換後的字符串傳遞迴inputTextText字符串。請直接在下面查看濃縮代碼。

    byte[] bytesInUTF8inputNoteText = inputNoteText.getBytes("UTF-8"); 
    
    inputNoteText = new String(bytesInUTF8inputNoteText, "UTF-8"); 
    this.var = inputNoteText; 
    
  3. 在充有從該數據庫查詢保持結果的變量設定器: setNoteText(noteText)的說明數據從數據庫查詢進入UTF8格式字節轉換,然後將其轉換回一個字符串並將其設置爲String noteText屬性。也在下面。

    public void setNoteText(String noteText) throws UnsupportedEncodingException { 
         byte[] bytesInUTF8inputNoteText = noteText.getBytes("UTF-8"); 
         String noteTextUTF8 = new String(bytesInUTF8inputNoteText, "UTF-8");      
         this.noteText = noteTextUTF8;} 
    
  4. 在SQL Server中,我從文字更改的數據類型爲nvarchar(MAX)存儲到Unicode數據,儘管這是一個不同類型的Unicode的。

我看到當我複製/粘貼從MS Word文檔到我們的JSF輸入文本框:

在Eclipse,如果我在bean來監視他的財產,一旦該字符串數據屬性已轉換爲UTF-8,所有字符均採用UTF-8格式。當我發佈到SQL Server時,保存在nvarchar(max)數據類型中的數據字符串會正確顯示所有UTF-8格式的字符。然後,當返回resultSet並使用從db查詢返回的字符串填充持有屬性時,它還顯示所有UTF-8格式正確....但是,...之間的正確字符串值之間坐在與JSF頁面和JSF頁面相關的屬性中,順便說一句,值是未格式化的,以便我看到問號,我應該看到單引號和雙引號以及項目符號點。我希望有人遇到過這種類型的問題,並且可以闡明我需要做些什麼來解決這個問題。似乎有點像JSF的錯誤,預先感謝您的輸入!

+0

SQL Server沒有對UTF-8的本機支持。請參閱[這篇文章](http://support.microsoft.com/kb/232580)。 –

回答

0

當您從Windows文件複製粘貼試試這個

String noteText = new String (noteText.getBytes ("iso-8859-1"), "UTF-8"); 
0

,編碼格式是不是UTF-8,但的[Windows 1252](http://en.wikipedia.org/wiki/Windows-1252)。請注意以濃綠色邊框標記的單元格。這些字符不映射到UTF-8字符集,因此在讀取時必須使用Windows-1252編碼。