新聞中心
在進行數(shù)據庫操作時,我們經常會遇到亂碼的問題,尤其是在插入語句中。這個問題的根本原因是編碼不一致,數(shù)據庫的編碼和程序的編碼不一致。本文將介紹。

創(chuàng)新互聯(lián)專注于安溪企業(yè)網站建設,響應式網站,商城網站制作。安溪網站建設公司,為安溪等地區(qū)提供建站服務。全流程定制網站建設,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
1.確認數(shù)據庫編碼
確保數(shù)據庫編碼是正確的非常重要,否則操作數(shù)據庫時就會遇到各種編碼問題。在MySQL中,我們可以通過如下語句查詢數(shù)據庫編碼:
“`
SHOW VARIABLES LIKE ‘character_set_database’;
“`
如果輸出結果為UTF-8,則數(shù)據庫編碼是UTF-8。如果輸出結果為GB2312,則數(shù)據庫編碼是GB2312。
2.確認程序編碼
和數(shù)據庫一樣,程序的編碼也需要確認。在PHP中,我們可以通過如下代碼獲取當前頁面的編碼:
“`
echo mb_detect_encoding(“字符串”);
“`
如果輸出結果為UTF-8,則程序編碼是UTF-8。如果輸出結果為GB2312,則程序編碼是GB2312。
3.在插入語句中使用utf8_encode()函數(shù)
如果程序編碼和數(shù)據庫編碼不一致,那么我們需要在插入語句中使用utf8_encode()函數(shù),將程序編碼轉換成數(shù)據庫編碼。例如,在PHP中,我們可以這樣寫插入語句:
“`
$name = “張三”;
$age = 18;
$name = utf8_encode($name);
$sql = “INSERT INTO `user` (name, age) VALUES (‘$name’, ‘$age’)”;
“`
這樣就能保證插入的數(shù)據編碼和數(shù)據庫編碼一致,不會出現(xiàn)亂碼的問題。
4.在連接數(shù)據庫時設置編碼
如果我們在連接數(shù)據庫時設置了編碼,就不必在每個插入語句中都使用utf8_encode()函數(shù)了。在MySQL中,我們可以像這樣設置編碼:
“`
$conn = mysqli_connect($host, $username, $password, $database);
mysqli_set_charset($conn, ‘utf8’);
“`
這樣,連接數(shù)據庫時就會自動設置編碼,我們在執(zhí)行插入語句時就不必再額外設置編碼了。
5.在數(shù)據庫中設置編碼
除了在程序中設置編碼外,我們還可以在數(shù)據庫中設置編碼。在MySQL中,我們可以通過如下語句設置數(shù)據庫編碼:
“`
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
“`
這里的utf8_general_ci是一種字符集,可以根據需要選擇其他字符集。
在進行數(shù)據庫操作時,我們需要注意編碼的一致性,只有確保編碼一致,才能避免亂碼的問題。本文介紹了常見的解決亂碼問題的方法,希望對讀者有所幫助。
成都網站建設公司-創(chuàng)新互聯(lián),建站經驗豐富以策略為先導10多年以來專注數(shù)字化網站建設,提供企業(yè)網站建設,高端網站設計,響應式網站制作,設計師量身打造品牌風格,熱線:028-86922220navicat我用UTF-8格式運行SQL語句插入的數(shù)據為什么漢字會變成亂碼
你的數(shù)據庫表或者字段的的字符集設置的不是utf8或者utf8mb4,所以存進去變成亂碼了
我說下我遇到的問題吧,不知道對渣宴你有如睜銀沒有幫助。我也是用的Navicat,開始數(shù)據顯示正常;用cmd檢索數(shù)據就不顯示中文;再打開Navicat也不顯示中文了。最后把mysql里my.ini中字符集改成早咐GBK就好了,原來是UTF8。
不在于你的navicat的設置,
而在于你的數(shù)據庫的設置,是否支持UTF-8?
mysql 創(chuàng)建數(shù)據庫時指定編碼很重要,很多開發(fā)者都使用了默認編碼,亂碼問題可是防不勝防。制定數(shù)據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。
網頁數(shù)據一般采用UTF8編碼,而數(shù)據庫默認為latin 。我們可以通過修改數(shù)據庫默認編碼方式為UTF8來減少數(shù)據庫創(chuàng)建時的設置,也能更大限度的避免因粗心造成的亂碼問題。
我們遵循的標準是,數(shù)據庫,表,字段和頁面或文本的編碼要統(tǒng)一起來
我們可以通過命令查看數(shù)據庫當前編碼: mysql> SHOW VARIABLES LIKE ‘character%’;
發(fā)現(xiàn)很多對應的都是 latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。
之一階段:
mysql設置編碼命令
復制代碼代碼如下:
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8;
然后 mysql> SHOW VARIABLES LIKE ‘character%’; 你可以看到全變?yōu)?utf8 。
但是,這只是一種假象
此種方式只在當前狀態(tài)下有效鍵肆,當重啟數(shù)據庫服務后失效。
所以如果想要不出現(xiàn)亂碼只有修改my.ini文件,
從my.ini下手(標簽下沒有的添加,有的修改)
default-character-set=utf8
default-character-set=utf8
default-character-set=utf8
以上3個section都要加default-character-set=utf8,平時我們可能只加了mysqld一項。
然后重啟mysql,執(zhí)行
mysql> SHOW VARIABLES LIKE ‘character%’;
確虧爛保所有的Value項都是utf8即可。
但是可惡的事情又來了,
|character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 注意 該配置| character_set_server | latin1 無法設置成UTF8 交互時候仍然會出現(xiàn)亂碼。
第二階段:找到下面這東東
X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe
重新啟動設置,將默認編碼設稿空轎置為utf8.這樣就能達到我們所要的效果了。
mysql> SHOW VARIABLES LIKE ‘character%’;
++-+
| Variable_name | Value |
++-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
++-+
8 rows in set
另外注意事項:
1、建表時加utf8,表字段的Collation可加可不加,不加時默認是utf8_general_ci了。
復制代碼代碼如下:
CREATE TABLE `tablename4` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`varchar1` varchar(255) DEFAULT NULL,
`varbinary1` varbinary(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
2、網頁xxx.php/jsp保存時選擇utf8編碼,頁頭更好加上
header(‘conten-type:text/html;charset=utf-8’);
在執(zhí)行CRUD操作前先執(zhí)行一下
插入語句數(shù)據庫亂碼的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于插入語句數(shù)據庫亂碼,如何解決插入語句導致數(shù)據庫亂碼的問題,navicat我用UTF-8格式運行SQL語句插入的數(shù)據為什么漢字會變成亂碼的信息別忘了在本站進行查找喔。
成都網站建設選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網站制作設計,高端小程序APP定制開發(fā),成都網絡營銷推廣等一站式服務。
當前名稱:如何解決插入語句導致數(shù)據庫亂碼的問題(插入語句數(shù)據庫亂碼)
文章源于:http://m.5511xx.com/article/dhigjoc.html


咨詢
建站咨詢
