問題在哪?
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
中文亂碼問題,有幾個需要注意的地方:
1、確保你數(shù)據(jù)庫的字符集是支持中文的;
2、如果數(shù)據(jù)庫保存的是中文但是顯示的時候是亂碼則需對客戶端字符集進(jìn)行設(shè)置,如set names gbk;
3、如果程序中導(dǎo)入或?qū)С龅臅r候產(chǎn)生的亂碼需要確??蛻舳俗址_,并保證修改的命令和導(dǎo)入導(dǎo)出命令在同一個會話中。
1、MySQL默認(rèn)的字符集是UTF8;
2、對于字符集的支持細(xì)化到四個層次:服務(wù)器(server),數(shù)據(jù)庫(database),數(shù)據(jù)表(table)和連接(connection)。
3、具體的字符集可以通過修改配置文件(my.cnf)進(jìn)行調(diào)整。
理論上說起來,設(shè)置為 utf8 也并非一個完全合適、100% 沒毛病的值,即便你將 MySQL 的字符集設(shè)置為 utf8 ,也有可能出現(xiàn)亂碼!
通過以下命令,你可以查看 MySQL 所支持的所有『字符集』編碼:
在顯示的 Charset ,你會看見熟悉的 utf8 。
如果你再仔細(xì)看一下這一行,你會發(fā)現(xiàn)這一行的 Maxlen 列中的值居然是 3 ?。?/p>
這是 MySQL 中的 utf8 并非我們現(xiàn)在常說的 『真·UTF8』 。它『 最多 』只用 3 個字節(jié)存儲一個字符,而有些中日韓生僻字small(包括 emoji 表情)/small的 Unicode 編碼是需要 4 個字節(jié)寬度才能存儲的,這就會導(dǎo)致一些亂碼的隱患。
MySQL 解決這個問題的方案是繞過 utf8 提出一種新的字符集來實(shí)現(xiàn) 『 真·UTF8 』 功能: utf8mb4 。
實(shí)際上,為了統(tǒng)一稱呼,MySQL 在提出 utf8mb4 字符集之后,就將 utf8 改為 utf8mb3 的別名,因此,你設(shè)置字符集為 utf8 本質(zhì)上就是設(shè)置成了 utf8mb3 。
在更高版本(8.x)的 mysql 中,MySQL 直接將 utf8 改為了 utfmb4 的別名。
錯誤原因:1.數(shù)據(jù)超長或類型不匹配; 2.數(shù)據(jù)庫記錄重復(fù)
解決方案:如果輸入內(nèi)容超多,應(yīng)該把你的內(nèi)容用 addslashes 處理。
如果輸入值超過類型最大限度,請修改好自動類型。比如類型32位為int,輸入內(nèi)容超出2147483647