需注意以下三點:
1、建立資料庫的時候:CREATE DATABASE `database`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2、建表的時候 CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、設定URL的時候 jdbc:mysql://localhost:3306/database?seUnicode=true&characterEncoding=UTF-8
這3個設定好了,基本就不會出問題了
總結:
是編碼的問題,資料庫,表和欄位的編碼和jsp的編碼統一,就應該能解決了,比如都是utf-8
例如將所有的編碼都設定成utf8,jsp的contentType="text/html;charset=utf-8"
修改資料庫預設編碼ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表的編碼:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
修改表欄位的編碼ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR
註:
mysql更改資料庫表欄位的編碼
alter table table_name change colum_name colum_name varchar(50) character set gbk collate gbk_chinese_ci not null 以上語句可以將表中的某個欄位的編碼更改。 collate是一個子句,可應用與資料庫定義或列定義以定義定序, 或應用於字串運算式以應用定序投影。 文法 COLLATE < collation_name > < collation_name > ::= { Windows_collation_name } | { SQL_collation_name } 參數 collation_name 是應用於運算式、列定義或資料庫定義的定序的名稱。 collation_name 可以只是指定的 Windows_collation_name 或 SQL_collation_name。 Windows_collation_name 是 Windows 定序的定序名稱。請參見 Windows 定序名稱。 SQL_collation_name 是 SQL 定序的定序名稱。請參見 SQL 定序名稱。 COLLATE 子句只能應用於 char、varchar、text、nchar、nvarchar 和 ntext 資料類型。 |