經(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ù),進入sell終端,進入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>標簽對中添加如下:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
注意在servlet中對請求進行響應(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ù)插入之前都進行一次轉(zhuǎn)碼。
另外:在連接數(shù)據(jù)庫的時候可以不用加上字符集參數(shù)了,直接用用戶名和密碼連接就可以了,如連接:
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數(shù)據(jù)庫名","用戶名","密碼");
?????? 嵌入 *.js 文件 <script? language=”javScript” src=”url ”></script>
1.? 定義結(jié)構(gòu):
a)???????? 變量定義: var xx = “xx” 無須匹配類型;
b)??????? 函數(shù)定義: function method(x , y){…} 參數(shù)同樣不用匹配類型;
可以通過 arguments.length 屬性來確定參數(shù)個數(shù)來創(chuàng)建不確定參數(shù)的函數(shù)如:
??? function noArguments(){
????????????? var len = arguments.length;
????????????? for(var i=0;i<len;i++){
????????????? ????????????? var fristArgument = noArguments.arguments[i];
??????????????????????????? ………// 通過 ? noArguments.arguments[i] 獲得參數(shù);
}
}
c)??????? 對象定義:
定義方式一 ? function obj(x,y){
?????? this.x=x;
?????? this.y=y;
?????? this.m1=method1;
?????? this.m2=method2;
?????? function method1(){…..}
function method2(){…..}
}
定義方式二 ? function obj(x,y){
?????? this.x=x;
?????? this.y=y;
?????? this.m1=function method1(){……}
?????? this.m2=function method2(){……}
}
d)??????? 使用對象:
var obj1 = new obj();
var new_x = obj.x; // 是用屬性的方式 1
var new_y = obj[‘y’]; // 是用屬性的方式 2
二 內(nèi)置對象:
?????? a) 數(shù)組對象( Array ):
???????????????????? var newArry =new Arry(n);
???????????????????? var newArry =new Arry(“one”,”two”,”there”,”four”);
?????? 注:屬性和方法不再列出。
??????
b) 字符串對象( String ):
???????????????????? var newStr =”xxx”;
???????????????????? var newStr=new String(“xxx”);
?????? 對字符串的比較直接使用 ”= =”
??????
?????? c) 數(shù)學(xué)對象( Math )
????????????? 注意:使用數(shù)學(xué)對象時不需要創(chuàng)建該對象,直接使用即可;
????????????? 例如: Math.PI; // 屬性的使用
Math.abs(x);// 方法的使用;
d) 日期對象( Date )
??????? var date1 =new Date();
????????????? var date2 =new Date(“ 日期子串 ”);
????????????? var date3 =new Date( 年,月,日, [ 時,分,秒,毫秒 ]);
????????????? var date4 =new Date( 毫秒 );
?
<%@ page
???
language="java"
???
extends="指定父類"
???
import="導(dǎo)入JAVA類" ??
???
session="false||true是否使用session對象"
???
buffer="定義緩沖區(qū)大小默認8kb"
???
autoFlush="false||true自動清除緩沖區(qū)"
???
isThreadSafe="false||true是否處理多請求"
???
info="定義相關(guān)信息.txt"
???
errorPage="url指定錯誤頁"
???
contentType="編碼方式"
???
isErroPage="false||true是否為處理異常頁"
%>?
<%@ include
file
="URL指定要包含的另外一個JSP文件,*.jspf,*.htmlf"%>
<%@ taglib
uri
="" prefix=""%>
常用的JSP動作元素
1
???
<jsp:useBean
???????
id="指定該bean對象名"
???????
scope="page||request||session||application bean的作用域"
???????
class="bean的class文件名,注意不能與beanName屬性一起使用"
???????
beanName="*.class或*.ser或bean包的名字,緊當bean不存在于指定???????????? 的作用域時才使用 "
???????
type="與class或beanName一起使用,指定要實例化的bean的類或接口"
???
>
???
<jsp:setProperty name="" property="" value="">實例話bean的初始特性值。
???
</jsp:/useBean>
2??
???
<jsp:setProperty
???????
name="對應(yīng)<jsp:useBean>中的id"
???????
property="*||bean屬性名 通過request參數(shù)設(shè)定bean屬性值"
???????
value="為bean屬性值指定值,需要指定bean屬性名"
???
/>
3??
???
<jsp:getProperty
???????
name="對應(yīng)<jsp:useBean>中的id"
???????
property="對應(yīng)想要獲得的屬性值名"
???
/>
4
???
<jsp:include>
???????
page="要包含文件的相對地址"
???????
flush="true||false 是否清空緩沖區(qū)"
???????
<jsp:param name="" value="" 可以傳遞一個參數(shù)/>
???
</jsp:include>
5
???
<jsp:forward page="URL或者一個表達式,用于將請求的頁面轉(zhuǎn)向其他頁面">
???????
<jsp:param name="" value="">可以傳遞參數(shù);
???
</jsp:forward>
6??
???
<jsp:param
name="" value="">
<%! %>
變量和方法聲明塊,要使用“;”結(jié)尾
<%? %>
腳本塊 可以聲明局部變量 但是不能定義方法!
<%= %>
表達式 注意內(nèi)部不能使用“;”
軟件準備: ( 我使用的是 WINDOWSXP — SP2)
?????? //------JDK5.0------
?????? jdk-1_5_0-windows-i586.exe
?????? //------JSP 容器 ----
?????? apache-tomcat-5.5.16.zip
tomcatPluginV31.zip
//------j2ee 插件 -----
?????? lomboz-eclipse-emf-gef-jem-3.1RC1.zip
?????? //-----------IDE-----------
eclipse-platform-3.2-win32.zip
//-----------JAVA 開發(fā)插件
eclipse-JDT-3.1zip
//----------- 語言漢化包 ------
NLpack1-eclipse-JDT-3.1.zipNLpack1-eclipse-platform-3.1-win32.zip
這些插件和軟件都是在官方網(wǎng)站上下載的,不知道地址的同學(xué)可以搜索一下就可以了。我就不浪費口水了。在進行以下安裝之前要先安裝 JDK ,一路下一步即可。完成后設(shè)置三個環(huán)境變量(如果原來系統(tǒng)有就不要添加了) JAVA_HOME(jdk 安裝目錄 )PATH(jdk 安裝目錄下的 BIN 目錄 )CLASSPATH( 類文件目錄,記到前面加個 .; ?)
?????? 第一步:安裝 eclipse3.1
直接解壓 eclipse-platform-3.2-win32.zip 到一個目錄下,建議目錄名路徑名之間不要有空格和漢字(原因我也不太說的清楚),好了之后再解壓 eclipse-JDT-3.1zip 到同一目錄中,注意要直接覆蓋而不要將解壓后的內(nèi)容放在 eclipse 目錄下,完成之后用同樣的方法解壓后面兩個漢化包覆蓋 eclipse 目錄。
?????? 第二步:安裝 tomcat
將 apache-tomcat-5.5.16.zip 直接解壓到一個目錄即可,完成之后建立一個系統(tǒng)環(huán)境變量叫 TOMCAT_HOME 并把值設(shè)置為剛才 tomcat 的安裝目錄 ;
第三步:安裝 tomcatPluginV31.zip
????????????? 將它解壓后的文件夾拷貝到 X:\....\eclipse\plugins 文件夾下面即可;
?????? 第四步:安裝 lomboz
????????????? 安裝漢化包插件一樣,直接解壓覆蓋原來的 eclipse 目錄即可;
?????? 好了,安裝完成了!現(xiàn)在開始配置了:
??????
需要配置的地方用圖片表示:大家照這改就可以了!(注意安裝目錄要使用你實際安裝的目錄不要照到抄哈!)
???圖片在http://corsair.java.photo.163.com 的work目錄下。
?