天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

中文亂碼的總結(jié)

  在開發(fā)中,總會碰到各種中文亂碼問題,下面稍作總結(jié)。

  1、數(shù)據(jù)庫的亂碼出現(xiàn)亂碼問題,我們第一反應(yīng)應(yīng)該是:是否數(shù)據(jù)庫字符編碼設(shè)置有問題。以mysql為例,裝好mysql后進入安裝目錄,打開my.ini配置文件查看mysql設(shè)置的編碼。在my.ini中有兩處設(shè)置字符編碼的地方,分別是[mysql]下的default-character-set及[mysqld]下的default-character-set。熟悉linux的朋友都知道以d結(jié)尾的表示服務(wù)端,如你想那樣,[mysql]設(shè)置的字符編碼是客戶端的,[mysqld]設(shè)置的字符編碼是mysql服務(wù)器端的編碼。我們的數(shù)據(jù)就是存儲在mysql服務(wù)器端的,為了能存下任何字符編碼的數(shù)據(jù),我們一般設(shè)置[mysqld]下的default-character-set=utf8(注意,不是utf-8)。代表客戶端的[mysql]下的default-character-set應(yīng)該怎么設(shè)置呢,一般朋友可能也設(shè)置成utf8,這可能會出問題的。如果這樣設(shè)置的話,當我們"運行cmd"打開DOS窗口,通過"mysql -uroot -p123"命令進入mysql的客戶端后,我們是不能插入中文的。道理很簡單,這是因為我們的操作系統(tǒng)的字符編碼是GBK(或GBK兼容),我們在DOS窗口輸入的中文(如:insert into test values('中文'))自然也是GBK的,而我們[mysql]設(shè)置的卻是utf8,因為不兼容所以會出錯。當然,如果我們使用相關(guān)mysql的GUI客戶端工具,進行相關(guān)設(shè)置,即使[mysql]設(shè)置成utf8也沒問題。但如果通過DOS窗口登陸mysql客戶端時,一般要設(shè)置[mysql]下的default-character-set=GBK。

  總結(jié):[mysql]下default-character-set=GBK,[mysqld]下default-character-set=utf8 

  2、使用GET請求的亂碼如果一個請求是GET方式時,比如<a href="url">標簽指定的請求如form表單以GET方式提交,我們可以在瀏覽器地址欄上看到類似http://localhost/proj/a.do?title=%C4%E3%BA%C3 這樣的URL。像這樣2個(%加上2位16進制數(shù))表示一個中文,這是用ISO8859-1(即lantin1)進行的編碼。對于這樣用GET請求的URL中的中文字符,我們是不能通過設(shè)置request.setCharacterEncoding("UTF-8")來解決的。

  解決方法有兩種:

  第一種方法是用 title = new String(title.getBytes("ISO8859-1"),"UTF-8");  來對每個有中文的請求參數(shù)進行解碼再編碼,這種方法比較繁瑣;

  第二種方法是修改tomcat的server.xml配置文件,把<Connector port="8080"...>修改成<Connector port="8080"... URLEncoding="UTF-8">,即在<Connector>元素中指定其URLEncoding="UTF-8",其默認值為lantin1。這屬性指定了URL的編碼,設(shè)置成UTF-8后,地址欄上就不會再出現(xiàn) a.do?title=%C4%E3%BA%C3 之類的內(nèi)容了,而是 a.do?title=中文。這種方法的缺點是,其它項目或該項目其它地方可能會因為修改而引入了新的中文編碼問題,比如使用這種方法之后,有些地方使用了第一種方法處理好了的中文將會再次變成亂碼。這種方法不常用,可能牽一發(fā)而動全身。 

  3、使用POST請求的亂碼對于form表單以POST提交的請求,可以用request.setCharacterEncoding("UTF-8")來解決。至于為什么這種方法對POST請求有效而對GET請求無效,請參考HTTP協(xié)議中GET與POST請求的差別,簡單來講就是GET請求的內(nèi)容放在請求頭里,POST請求是放在請求體來。一般來講我們可以通過給項目增加一個字符集過濾器來一次性解決POST請求的中文亂碼。過濾器里的內(nèi)容非常簡單,就是調(diào)用request.setCharacterEncoding(encoding),encoding是我們要設(shè)置的字符集。過濾器可以自己編寫,也可以使用spring提供的org.springframework.web.filter.CharacterEncodingFilter。  

  綜上所述我們在中文亂碼這個問題上,一般的做法如下: 

  1、編碼集用UTF-8而不是GBK 

  2、給我們的應(yīng)用加上一個字符集過濾器 

  3、所有的Form表單都以POST進行提交 

  4、用鏈接<a href="a.do?name=中文">進行的提交,最好用new String(title.getBytes("ISO8859-1"),"UTF-8")來解決而不是修改tomcat的配置文件

it知識庫中文亂碼的總結(jié),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 麻豆免费版 | 中文字幕亚洲欧美日韩2019 | 国产成人精品免费视频软件 | 嫩草成人国产精品 | 香蕉久久夜色精品国产小说 | 97超碰97资源在线观看视频 | 巨黄的肉辣文np | 污污内射久久一区二区欧美日韩 | 日本大片免a费观看视频 | 热久久综合这里只有精品电影 | 男人插曲女人下生免费大全 | 欧洲亚洲精品A片久久99果冻 | 97人视频国产在线观看 | 黄色三级视频网站 | 99久久爱re热6在线播放 | 色婷婷五月综合久久中文字幕 | 精品视频一区二区三三区四区 | 综合色中色 | 日日a.v拍夜夜添久久免费 | 午夜免费小视频 | 富婆夜店找黑人猛男BD在线 | 精品无码久久久久久国产百度 | 国产精品-区区久久久狼 | 伊人国产在线播放 | 男生脱美女内裤内衣动态图 | 久久女婷五月综合色啪 | 国产成年网站v片在线观看 国产成年人在线观看 | 青青草伊人网 | 国内精品久久久久久西瓜色吧 | 午夜一个人在线观看完整版 | 国内精品久久影视免费 | 欧美日本高清动作片www网站 | 夜色55夜色66亚洲精品网站 | 中文字幕无码亚洲视频 | 97影院理论午夜伦不卡偷 | 国产一区内射最近更新 | 亚洲成人三级 | 精品国产乱码久久久久久上海公司 | 亚洲一卡二卡三卡四卡无卡麻豆 | 中文字幕亚洲综合小综合在线 | 青青草在线 视频 |