mysql錯(cuò)誤:Warning: #1366 Incorrect string value:?誤主要是因?yàn)榫幋a問(wèn)題了,如你gb2312的編碼中如果有繁體字就會(huì)提示這類(lèi)錯(cuò)誤了,所以導(dǎo)致這問(wèn)題是編碼范圍問(wèn)題.
我用mysql記錄syslog-ng的日志信息,分解后把日志插入MYSQL,INSERT語(yǔ)句如下:
INSERT INTO logs(host, facility, priority, level, tag, datetime, program, msg)
VALUES ( 'phy', 'daemon', 'notice', 'notice', '1d', '2008-07-30 12:24:12','smbd', 'smbd[45997]: xxxx opened file Public/pub/綠光森?DVD13.rmvb read=Yes write=No (numopen=14)' )
在插入過(guò)程中出現(xiàn)以下warning:Warning (Code 1366): Incorrect string value: 'xC2xCCxB9xE2xC9xAD...' for column 'msg' at row 1 //phpfensi.com
查看插入后數(shù)據(jù)表,msg 字段中只有中文字符“綠光森林”前的部分插入,而其后內(nèi)容被截?cái)嗔?插入字段落msg的內(nèi)容如下:
smbd[45997]: xxxx opened file Public/pub/
這其實(shí)編碼問(wèn)題,偶遇到的同事是吧編碼設(shè)置GB2312導(dǎo)致的,當(dāng)涉及到一些特殊字符的時(shí)候,就會(huì)出現(xiàn)截?cái)嗟臅r(shí)候,就會(huì)報(bào)錯(cuò),轉(zhuǎn)變?yōu)椤? ? ”進(jìn)行顯示.
mysql錯(cuò)誤:Warning: #1366 Incorrect string value:解決方法,很簡(jiǎn)單,將原來(lái)的編碼gb2312改為:gbk編碼,或者改為utf8編碼.
附上:GB2312和GBK編碼區(qū)別.
GB2312是中國(guó)規(guī)定的漢字編碼,也可以說(shuō)是簡(jiǎn)體中文的字符集編碼;GBK 是 GB2312的擴(kuò)展,除了兼容GB2312外,它還能顯示繁體中文,還有日文的假名.
經(jīng)驗(yàn)之談:建時(shí)選擇utf8字符集或者再把mysql數(shù)據(jù)庫(kù)表或數(shù)據(jù)庫(kù)字段或數(shù)據(jù)集修改成uft8即可解決了.