我有一個網站,需要將數據從文本字段存儲到mysql數據庫中。 前端是perl。我用utf8::encode
將數據編碼爲utf8。utf-8隱形字符
該請求是對連接到mysql db並插入此文本的Java後端進行的。 對於表,默認字符集設置爲utf8。 這在很多情況下都有效,但在某些情況下會失敗。
如果我使用テスト
,存儲在數據庫中的數據顯示問號:ã??ã?¹ã??
。 如果我試圖直接從sql瀏覽器插入utf8編碼的字符串,一切工作正常。 更新事件集彙總= ãã¹ã
其中event_id = 11657
;
插入時,我注意到有一些空白字符出現在mysql查詢瀏覽器中,如:ã ã¹ ã
。 從這裏插入後,數據庫中的數據會顯示數據庫中的一些框,而不是這些空格,並且在utf8對其進行解碼後,網站會正確顯示テスト
。 只有當我直接從網站插入時,這些特殊字符纔會出現在數據庫中的問號。
有人能幫我這些特殊字符嗎?我需要以不同的方式處理它們嗎?
聽起來像數據流的某處存在編碼問題。很難說在沒有任何關於實際代碼的知識的情況下,但Java中常見的罪魁禍首是使用'String.getBytes()'(不帶編碼參數)。另一種可能性是在通信網頁時編碼問題。 –
-1 downvote for [提供代碼](http://sscce.org),沒有人可以實際[重現問題](http://www.chiark.greenend.org.uk/~sgtatham/bugs.html #showow),並且所有的答案(到目前爲止4)都充滿了假設。英文散文是代碼的一個可憐的替代品。 – daxim