linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法
中文亂碼無論在何時都是一個頭疼的問題,mysql的存儲過程參數(shù)也同樣存在這個問題。
1、直接使用insert?into語句沒問題,能夠正常插入漢字。
2、把insert?into語句移到Procedure中后,就無法插入漢字了。在客戶端軟件中插入的漢字總是為亂碼,英文和數(shù)字沒問題。
3、如果在jdbc中調(diào)用這個Procedure總是報錯:
在查閱了很多相關(guān)資料后,發(fā)現(xiàn)只需要改動procedure的參數(shù)的定義就OK了,改動為:在varchar參數(shù)后面加入:?character?set?指定編碼。由于服務(wù)器編碼為gbk,我指定為:
declare? v_title?varchar(200)??character?set?gbk
再執(zhí)行插入時就不會亂碼了
寫個完整的 存儲過程 供參考
create procedure copyDevTO_authKey()
begin
DECLARE var_userId int;
DECLARE var_authkey varchar(512)?character?set?gbk;
DECLARE done INT DEFAULT 0;
DECLARE cur_device CURSOR FOR select? userId,authkey from tbl_device;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
SET done = 0;
OPEN cur_device;
-- loop? cursor
FETCH cur_device INTO var_userId , var_authkey;
WHILE done <> 1 DO
insert into tbl_user_authkey values (var_userId , var_authkey);
FETCH cur_device INTO var_userId , var_authkey;
END WHILE;
CLOSE cur_device;
end
============================================================================
昨天下班前發(fā)現(xiàn)有個存儲過程有問題,無法正確的查詢數(shù)據(jù)。
數(shù)據(jù)表和字段都是 utf8 存儲的中文內(nèi)容。在連接數(shù)據(jù)庫后也使用 SET NAMES utf8; 設(shè)置了編碼。但是在存儲過程中無法查詢中文內(nèi)容的字段。由于一些邏輯處理的原因,存儲過程使用了游標(biāo),同時定義了一些局部變量。
CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)
BEGIN
DECLARE user_id VARCHAR(32) ;
– 省略代碼若干
END
user_id 在代碼中參與了一個 查詢 SELECT * FROM `table1` WHERE `UID` = user_id。
在存儲過程中輸出 user_id 發(fā)現(xiàn)英文內(nèi)容正常,但是中文內(nèi)容亂碼。
開始以為存儲過程的編碼有問題,但是不使用變量的內(nèi)容又正常。上網(wǎng)查了一下,有人遇到同樣的問題:
但是顯然,他的問題只要正確設(shè)置編碼即可。
突然靈光一現(xiàn),NND,character set 這個東西我忽略了。正解如下:
CREATE PROCEDURE `PROC_FOOBAR`(id INTEGER)
BEGIN
DECLARE code, user_id VARCHAR(32) CHARACTER SET utf8;
– 省略代碼若干
END
kindeditor文本編輯器亂碼中亂碼問題解決辦法
這個問題我已經(jīng)解決掉了,不是更改內(nèi)容的編碼格式,只要將lang/zh_CN.js??這個文件的編碼轉(zhuǎn)換成unicode即可 操作方法是?用記事本打開這個文件,另存為,然后更改文件的編碼格式為unico ...
關(guān)于jFinal開發(fā)中遇到的中文亂碼問題解決辦法
關(guān)于jFinal開發(fā)中遇到的中文亂碼問題解決辦法 設(shè)置tomcat的編碼,修改
MySQL存儲過程中的3種循環(huán),存儲過程的基本語法,ORACLE與MYSQL的存儲過程/函數(shù)的使用區(qū)別,退出存儲過程方法
在MySQL存儲過程的語句中有三個標(biāo)準(zhǔn)的循環(huán)方式:WHILE循環(huán),LOOP循環(huán)以及REPEAT循環(huán).還有一種非標(biāo)準(zhǔn)的循環(huán)方式:GOTO,不過這種循環(huán)方式最好別用,很容易引起程序的混亂,在這里就不錯具體 ...
ubuntu mysql emma中文亂碼問題解決
ubuntu mysql emma中文亂碼問題解決 emma默認(rèn)用apt-get 安裝的話,emma是不支持中文的,配置文件或直接修改emma程序源文件(python). apt-get安裝emma ...
MYSQL存儲過程中常使用的命令記錄
MYSQL存儲過程中常使用的命令記錄 1.觸發(fā)器trigger 查看:show triggers; 2.存儲過程procedure 查看:show procedure status; 查看詳細(xì):sho ...
MYSQL存儲過程中的IN、OUT和INOUT
MYSQL存儲過程中的IN.OUT和INOUT,不能簡單理解為一個方法的參數(shù)和返回值,而是面向整個過程上下文變量的. 一.MySQL 存儲過程參數(shù)(in) 基本可以理解為傳入function的參數(shù),而 ...
Mysql 存儲過程中使用多游標(biāo)
Mysql 存儲過程中使用多游標(biāo) drop procedure IF EXISTS test_proc_1; create procedure test_proc_1() begin ; ) ; ) ...
MySQL存儲過程中使用SELECT …INTO語句為變量賦值
使用SELECT …INTO語句為變量賦值 在MySQL存儲過程中,可以使用SELECT …INTO語句對變量進(jìn)行賦值,該語句在數(shù)據(jù)庫中進(jìn)行查詢,并將得到的結(jié)果賦值給變量.SELECT …INTO語句 ...
隨機(jī)推薦
JavaSE18章_JSON解析詳解
一.JSON簡介 JSON(JavaScript Object Notation),是一種輕量級的數(shù)據(jù)交換格式.JSON是存儲和交換文本信息的,語法類似 XML.易于人閱讀和編寫,同時也易于機(jī)器解析和 ...
Revit中如何將視圖過濾器傳遞到其它項目
在Revit中采用過濾器控制視圖顯示,利用過濾器給圖元著色,利用過濾器控制視圖顯示或隱藏等,那么,在不同的項目中是否每次都要設(shè)置相同的過濾器,其實,Revit提供了這么一種在不同項目傳遞信息的方式,在 ...
python(4)-迭代器 和 生成器
迭代器是訪問集合元素的一種方式.迭代器適合遍歷一些巨大或無限的集合,比如幾個G的文件.迭代器具有以下特點: 1. 訪問者不需要關(guān)心迭代器內(nèi)部的結(jié)構(gòu),只需通過__next__()方法不斷取下一個內(nèi)容 2 ...
Python 爬取 中關(guān)村CPU名字和主頻
0.準(zhǔn)備工作 ? 1.相關(guān)教程 ? ??? ??Python 爬蟲系列教程:http://cuiqingcai.com/1052.html ? ??? ??Python Web課程:http://ww ...
開始補習(xí)JavaScript的第一天
JavaScript介紹: ①.JavaScript是一種解釋性的,基于對象的腳本語言. ②.JavaScript是一種輕量級的編程語言,可以嵌入到html頁面中,由瀏覽器來解釋執(zhí)行. ③.JavaS ...
AIOps 平臺的誤解,挑戰(zhàn)及建議(下)— AIOps 挑戰(zhàn)及建議
本文篇幅較長,分為上,中,下,三個部分進(jìn)行連載.內(nèi)容分別為:AIOps?背景/所應(yīng)具備技術(shù)能力分析(上),AIOps 常見的誤解(中),挑戰(zhàn)及建議(下). 前言 我大概是 5,6 年前開始接觸 ITO ...
在web.xml中配置監(jiān)聽器來控制ioc容器生命周期
5.整合關(guān)鍵-在web.xml中配置監(jiān)聽器來控制ioc容器生命周期 原因: 1.配置的組件太多,需保障單實例 2.項目停止后,ioc容器也需要關(guān)掉,降低對內(nèi)存資源的占用. 項目啟動創(chuàng)建容器,項目停止銷 ...
TerminateProcess的使用問題
最好時外部進(jìn)程來結(jié)束目標(biāo)進(jìn)程,類似于任務(wù)管理器的結(jié)束目標(biāo)進(jìn)程方式.如果是自身進(jìn)程想結(jié)束自身,可能不同版本的windows行為不一致,有一些能自身強制退出,有一些強制退出不了. 本來MSDN上就說了這個 ...
Java知多少(21)this關(guān)鍵字詳解
this 關(guān)鍵字用來表示當(dāng)前對象本身,或當(dāng)前類的一個實例,通過 this 可以調(diào)用本對象的所有方法和屬性.例如: public class Demo{ public int x = 10; publi ...
用uart實現(xiàn)printf函數(shù)
硬件:JZ2440 實現(xiàn)功能:用putchr()函數(shù)實現(xiàn)printf() start.s nand.c uart.c uart.h my_stdio.c my_stdio.h main.c start ...
總結(jié)
以上是生活随笔為你收集整理的linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 如何添加索引_MySQL如何
- 下一篇: 计算机用户 图片存储位置,手机相册在哪个