簡體   English   中英

為什么我的UTF-8編碼數據沒有保留?UTF-8? 編碼?

[英]Why is my UTF-8 encoded data not staying ?UTF-8? encoded?

我要解決的問題是:例如,我們應用程序的用戶正在從Windows相關文檔(例如Word)中復制/粘貼字符,而我們的應用程序無法識別單引號和雙引號或項目符號。

到目前為止,我已采取以下步驟將這些數據轉換為UTF格式:

  1. 在servers.xml中的連接器標記中,我添加了屬性URIEncoding =“ UTF-8”。

  2. 在負責存儲輸入的bean中,我創建了一個byte []並傳遞了包含inputNote文本的String,然后將其轉換為UTF-8。 然后將UTF-8轉換后的String傳遞回inputNoteText String。 請直接在下面查看壓縮代碼。

     byte[] bytesInUTF8inputNoteText = inputNoteText.getBytes("UTF-8"); inputNoteText = new String(bytesInUTF8inputNoteText, "UTF-8"); this.var = inputNoteText; 
  3. 在負責保存數據庫查詢結果的變量設置器中:setNoteText(noteText)將來自數據庫查詢的注釋數據轉換為UTF8格式的字節,然后將其轉換回String並將其設置為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中的屬性進行監視,則將String屬性中的數據轉換為UTF-8后,所有字符均采用UTF-8格式。 當我發布到SQL Server時,以nvarchar(max)數據類型保存的數據字符串正確顯示了UTF-8格式的所有字符。 然后,當返回resultSet並使用從db查詢返回的String填充holding屬性時,它也顯示所有內容均以UTF-8 .... BUT正確格式設置,...介於正確的字符串值之間坐在與JSF頁面和JSF頁面相關聯的屬性中,順便說一下,該值是未格式化的1.2,因此我看到了問號,在這里我應該看到單/雙引號和項目符號。 我希望以前有人遇到過此類問題,並且可以對我需要做些什么來解決此問題有所了解。 似乎有點像JSF錯誤,在此先感謝您的輸入!!

嘗試這個

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

從Windows文檔復制粘貼時,編碼格式不是UTF-8,而是[Windows-1252]( http://en.wikipedia.org/wiki/Windows-1252 )。 請注意標記為綠色粗邊框的單元格。 這些字符DONT映射到UTF-8字符集,因此您在閱讀時必須使用Windows-1252編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM