程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 對MySQL 存儲過程中亂碼的破解

對MySQL 存儲過程中亂碼的破解

編輯:MySQL綜合教程

以下的文章主要介紹的是MySQL 存儲過程中的亂碼的實際解決方案,我們大家都知道存儲過程有問題的話,一般表現在無法對數據進行正確查詢。以下就是文章的具體內容介紹,望你會有所收獲。

數據表和字段都是 utf8 存儲的中文內容。在連接數據庫後也使用 SET NAMES utf8; 設置了編碼。但是在MySQL 存儲過程中無法查詢中文內容的字段。由於一些邏輯處理的原因,存儲過程使用了游標,同時定義了一些局部變量。

  1. CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)  
  2. BEGIN  
  3. DECLARE user_id VARCHAR(32) ;  

省略代碼若干

  1. END 

user_id 在代碼中參與了一個 查詢

  1. 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 這個東西我忽略了。正解如下:

  1. CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)  
  2. BEGIN  
  3. DECLARE code, user_id VARCHAR(32) CHARACTER SET utf8;  

省略代碼若干

  1. END  

以上的相關內容就是對MySQL 存儲過程亂碼的解決辦法的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved