Corsair

          My javaWorld
          數(shù)據(jù)加載中……
          解決linux環(huán)境下jsp+mysql數(shù)據(jù)庫中文亂碼的問題

          經(jīng)過一個星期的艱苦奮斗終于解決了這個問題,特將經(jīng)驗摘錄下來備忘。本文將解決以下的幾種亂碼問題。

          中文存入 mysql 數(shù)據(jù)表出現(xiàn)的亂碼,從 JSP 頁面讀取 mysql 中文數(shù)據(jù)出現(xiàn)亂碼,以及在 sell 環(huán)境下查看數(shù)據(jù)庫表中文數(shù)據(jù)出現(xiàn)亂碼。

          linux平臺:ubuntu6.10

          mysql版本:5.0

          瀏覽器:firefox2.0

          為了解決中文亂碼的問題首先就是要同一字符集,我采用utf-8

          第一步:安裝mysql后,修改配置文件/etc/mysql/my.cnf 找到相應(yīng)項并添加如下字段,如下所示:(注意是添加,配置文件中其他不相關(guān)的內(nèi)容下面并沒有列出來)

          [client]

          default-character-set=utf8

          [mysqld_safe]

          default-character-set=utf8

          [mysqld]

          default-character-set=utf8

          [mysql]

          default-character-set=utf8

          重新啟動mysql服務(wù),進(jìn)入sell終端,進(jìn)入mysql的命令提示符下輸入如下指令:

          mysql>show variables like '%char%';

          如果出現(xiàn)的列表各項內(nèi)容和以下相同表明配置成功了,

          +---------------------+---------------------

          | 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 | /usr/share/mysql/charsets/

          +---------------------+----------------------

          第二步:在要發(fā)送中文或者要讀取中文的JSP頁面(最好所有頁面)都添加如下聲明:

          <%@page pageEncoding="UTF-8"%>

          <%@ page contentType="text/html;charset=utf-8"%>

          <% request.setCharacterEncoding("utf-8"); %>

          <head>標(biāo)簽對中添加如下:

          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

          注意在servlet中對請求進(jìn)行響應(yīng)的方法中同樣要有:

          response.setContentType("text/html;charset=utf-8");


          第三步:(由于不明原因firefox發(fā)送的請求仍然是latin1的時候執(zhí)行這一步)

          在將請求的參數(shù)插入數(shù)據(jù)庫之前還要再執(zhí)行一次轉(zhuǎn)碼(latin1編碼轉(zhuǎn)換為utf-8),例如:

          String utf8_str = new String( latin_str .getBytes("latin1"),"utf-8");

          這一步可以寫在一個過濾器中,不怕麻煩也可以在每一次在將請求數(shù)據(jù)插入之前都進(jìn)行一次轉(zhuǎn)碼。


          另外:在連接數(shù)據(jù)庫的時候可以不用加上字符集參數(shù)了,直接用用戶名和密碼連接就可以了,如連接:

          con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數(shù)據(jù)庫名","用戶名","密碼");

          posted on 2007-01-14 20:04 銀河海盜 閱讀(2053) 評論(0)  編輯  收藏 所屬分類: WEB

          主站蜘蛛池模板: 岚皋县| 滨海县| 天门市| 项城市| 南宫市| 五华县| 湘潭市| 汝城县| 夏津县| 梅河口市| 新巴尔虎右旗| 金沙县| 嘉禾县| 东乌珠穆沁旗| 金乡县| 吉林省| 丰原市| 建始县| 务川| 怀宁县| 云龙县| 乳源| 望奎县| 商城县| 旺苍县| 太保市| 托克逊县| 阿尔山市| 北流市| 四川省| 祁东县| 龙海市| 民县| 广德县| 永春县| 山东| 西和县| 惠来县| 太湖县| 河西区| 丘北县|