mysql資料庫修改資料庫編碼,欄位編碼與表編碼(轉)

來源:互聯網
上載者:User

標籤:

最近看了一下KIGG架構,發現在用EF + MYSQL資料庫時,資料出現了亂碼,用工具(Navicat )查看一下表category的結構發現 KIGG 資料庫的預設情況是用latin1編碼的(DEFAULT CHARSET=latin1), 如下:

CREATE TABLE `category` ( `Id` binary(16) NOT NULL, `UniqueName` varchar(64) NOT NULL,
`Name` varchar(64) NOT NULL,
`CreatedAt` datetime NOT NULL,
PRIMARY KEY (`Id`),
KEY `IX_Category_UniqueName_CreatedAt` (`UniqueName`,`CreatedAt`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

我把表的編碼格式改成 utf8. 查看錶category 發現表的DDL 變成了,

CREATE TABLE `category` (

`Id` binary(16) NOT NULL,
`UniqueName` varchar(64) character set latin1 NOT NULL,
`Name` varchar(64) character set latin1 NOT NULL,
`CreatedAt` datetime NOT NULL,
PRIMARY KEY (`Id`),
KEY `IX_Category_UniqueName_CreatedAt` (`UniqueName`,`CreatedAt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

發現在原來的表中之前定義的列(欄位)的編碼類別型不會因為表的編碼格式而變化,還是latin1(拉丁文格式), 但建立列的類型為是UTF8格式的。由此可見MYSQL中的資料編碼格式已經粒子化到 單位“列”。 在建 資料庫的時候可以指定資料庫編碼格式,在這之後所建的表和列的編碼格式都會以此格式為預設格式。若之後想改資料庫的編碼格式的話,想要把之前的表和列的編碼格式都改過來的話就要一一改過來了。所以,我們要使不擔心資料庫的編碼格式,只要在 MYSQL的安裝目錄下面X:\Program File\MySQL5 下面找到一個my.ini 檔案,用記事本開啟找到

default-character-set=你要設定的編碼格式 。修改其格式即可。在後面建庫,建表,建欄位就不要做其它的設定,除非你要特別要求。

KIGG例子中 EF + MYSQL 的亂碼原因是因為程式提交給資料庫是檔案是UTF8格式的但資料庫中欄位接收的格式卻是latin1 格式的,所以只要將列改為UTF8格式即可。

總結:對於慣用微軟的的SQLSERVER 的使用者來說很少觀注資料庫資料的編碼格式,因為微軟已經幫使用者做完了那些邊角的工作,所以使我們忽略很多重要的事。在用MYSQL中要注意 其中的資料庫,表,列 對應的編碼格式沒有內含項目關聯性,最終決定內容以什麼編碼格式儲存下來還是 定義列時指定的編碼(`Name` varchar(64) character set latin1 NOT NULL,),在建庫和表時設定編碼格式只是相當與為自己的下一級設定預設編碼格式。

http://www.cnblogs.com/seebook/archive/2010/11/06/1870649.html

1.修改資料庫的編碼
將資料庫(test)的編碼方式修改為utf8,如:
ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

2.修改表的編碼
將表(test)的編碼方式修改為utf8,如:
ALTER TABLE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

3.修改欄位的編碼
將表(test)中欄位(name)的編碼方式修改為utf8,如:
ALTER TABLE `test` CHANGE `name` `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL; 

http://www.cnblogs.com/linuxer/archive/2012/09/24/2870515.html

 

mysql資料庫修改資料庫編碼,欄位編碼與表編碼(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.