2016-11-22 104 views
2

我正在使用liferay 6.2mysql- 5.5.52。在自定義portlet我已經暴露其由Android使用& iOS應用的一些網絡服務,在一些API的是一個字符串參數&如果我們在param所發送微笑等時,拋出異常:值java.sql.SQLException:不正確的字符串值: '\ XF0 \ x9F \ X98 \ X90 \ XF0 \ x9F ......' 在第1行列 'comment_',我也試圖改變數據庫歸類到utf8mb4 -default整理,在這種情況下,我能夠爲了保存這個☺,但不是其他的,我試圖找出問題所在。無法在mysql數據庫liferay中保存表情

回答

3

由於您沒有提供究竟你已經改變了的細節,這是很難確定這個答案是相關的。如果您沒有,請確保更改字符集而不僅僅是排序規則

字符集是一組符號和編碼。排序規則是一組用於比較字符集中的字符的規則。

同時仔細檢查您的數據庫連接字符串。它可以強制執行與爲數據庫/表指定的編碼不同的編碼。

+0

我試過改變字符,也嘗試將mysql變量character_set_client,_connection和_results更改爲utf8mb4,但仍然是同樣的問題。 – sRijit

+0

現在我正在做的是將字符串編碼爲base64,然後保存並將其保存,但解碼過程中會得到不同的結果。 – sRijit

0

的問題可以是任何層 - 最肯定的東西有編碼做(如米倫在他的回答說明)。您可能會從您的Web服務中獲取非法編碼(或解碼)的內容,在數據庫連接(客戶端)中破壞它或在數據庫中編碼錯誤。 Liferay的文檔僅爲數據庫提到了create database dbname character set utf8;

容易測試和識別的UTF-8字符的主要來源之一是http://fliptitle.com - 一旦您最喜歡的測試文本正確通過,您可能編碼正確。如果沒有:檢查你的字體,因爲他們沒有使用所有的字符,或者你的編碼錯誤。