定义mysql字段的编码模式_在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式。...
最近看了一下KIGG框架,發現在用EF + MYSQL數據庫時,數據出現了亂碼,用工具(Navicat )查看一下表category的結構發現 KIGG 數據庫的默認情況是用latin1編碼的(DEFAULT CHARSET=latin1), 如下:
CREATETABLE`category`?(`Id`binary(16)NOTNULL,
`UniqueName`varchar(64)NOTNULL,
`Name`varchar(64)NOTNULL,
`CreatedAt`datetimeNOTNULL,PRIMARYKEY(`Id`),KEY`IX_Category_UniqueName_CreatedAt`?(`UniqueName`,`CreatedAt`)
)?ENGINE=InnoDBDEFAULTCHARSET=latin1;
我把表的編碼格式改成 utf8. 查看表category 發現表的DDL 變成了,
CREATETABLE`category`?(
`Id`binary(16)NOTNULL,
`UniqueName`varchar(64)charactersetlatin1NOTNULL,
`Name`varchar(64)charactersetlatin1NOTNULL,
`CreatedAt`datetimeNOTNULL,PRIMARYKEY(`Id`),KEY`IX_Category_UniqueName_CreatedAt`?(`UniqueName`,`CreatedAt`)
)?ENGINE=InnoDBDEFAULTCHARSET=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)charactersetlatin1NOTNULL,),在建庫和表時設置編碼格式只是相當與為自己的下一級設置默認編碼格式。
總結
以上是生活随笔為你收集整理的定义mysql字段的编码模式_在 mysql 中 定义 数据库,表,列时,设定的各个的编码格式。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 存储过程 嵌套if_mysq
- 下一篇: mysql pool返回值_Mysql成