以下的文章主要介紹的是MySQL 存儲過程中的亂碼的實際解決方案,我們大家都知道存儲過程有問題的話,一般表現在無法對數據進行正確查詢。以下就是文章的具體內容介紹,望你會有所收獲。
數據表和字段都是 utf8 存儲的中文內容。在連接數據庫後也使用 SET NAMES utf8; 設置了編碼。但是在MySQL 存儲過程中無法查詢中文內容的字段。由於一些邏輯處理的原因,存儲過程使用了游標,同時定義了一些局部變量。
- CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)
- BEGIN
- DECLARE user_id VARCHAR(32) ;
省略代碼若干
- END
user_id 在代碼中參與了一個 查詢
- SELECT * FROM `table1` WHERE `UID` = user_id
在存儲過程中輸出 user_id 發現英文內容正常,但是中文內容亂碼。
開始以為MySQL 存儲過程的編碼有問題,但是不使用變量的內容又正常。上網查了一下,有人遇到同樣的問題:
http://203.208.37.132/search?q=cache:VUrY1gSBQGoJ:topic.csdn.net/u/20090429/17/46c012c2-a03f-4705-8648-b18ce75efa0b.html+MySQL+%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B+%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81&cd=1&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy28jxW-2knrZuSFRzKD3K79huGGIUA
但是顯然,他的問題只要正確設置編碼即可。
突然靈光一現,NND,character set 這個東西我忽略了。正解如下:
- CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)
- BEGIN
- DECLARE code, user_id VARCHAR(32) CHARACTER SET utf8;
省略代碼若干
- END
以上的相關內容就是對MySQL 存儲過程亂碼的解決辦法的介紹,望你能有所收獲。