經(jīng)過(guò)一個(gè)星期的艱苦奮斗終于解決了這個(gè)問(wèn)題,特將經(jīng)驗(yàn)摘錄下來(lái)備忘。本文將解決以下的幾種亂碼問(wèn)題。
中文存入 mysql 數(shù)據(jù)表出現(xiàn)的亂碼,從 JSP 頁(yè)面讀取 mysql 中文數(shù)據(jù)出現(xiàn)亂碼,以及在 sell 環(huán)境下查看數(shù)據(jù)庫(kù)表中文數(shù)據(jù)出現(xiàn)亂碼。
linux平臺(tái):ubuntu6.10
mysql版本:5.0
瀏覽器:firefox2.0
為了解決中文亂碼的問(wèn)題首先就是要同一字符集,我采用utf-8。
第一步:安裝mysql后,修改配置文件/etc/mysql/my.cnf 找到相應(yīng)項(xiàng)并添加如下字段,如下所示:(注意是添加,配置文件中其他不相關(guān)的內(nèi)容下面并沒(méi)有列出來(lái))
[client]
default-character-set=utf8
[mysqld_safe]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysql]
default-character-set=utf8
重新啟動(dòng)mysql服務(wù),進(jìn)入sell終端,進(jìn)入mysql的命令提示符下輸入如下指令:
mysql>show variables like '%char%';
如果出現(xiàn)的列表各項(xiàng)內(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頁(yè)面(最好所有頁(yè)面)都添加如下聲明:
<%@page pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<% request.setCharacterEncoding("utf-8"); %>
在<head>標(biāo)簽對(duì)中添加如下:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
注意在servlet中對(duì)請(qǐng)求進(jìn)行響應(yīng)的方法中同樣要有:
response.setContentType("text/html;charset=utf-8");
第三步:(由于不明原因firefox發(fā)送的請(qǐng)求仍然是latin1的時(shí)候執(zhí)行這一步)
在將請(qǐng)求的參數(shù)插入數(shù)據(jù)庫(kù)之前還要再執(zhí)行一次轉(zhuǎn)碼(將latin1編碼轉(zhuǎn)換為utf-8),例如:
String utf8_str = new String( latin_str .getBytes("latin1"),"utf-8");
這一步可以寫在一個(gè)過(guò)濾器中,不怕麻煩也可以在每一次在將請(qǐng)求數(shù)據(jù)插入之前都進(jìn)行一次轉(zhuǎn)碼。
另外:在連接數(shù)據(jù)庫(kù)的時(shí)候可以不用加上字符集參數(shù)了,直接用用戶名和密碼連接就可以了,如連接:
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/數(shù)據(jù)庫(kù)名","用戶名","密碼");
?????? 嵌入 *.js 文件 <script? language=”javScript” src=”url ”></script>
1.? 定義結(jié)構(gòu):
a)???????? 變量定義: var xx = “xx” 無(wú)須匹配類型;
b)??????? 函數(shù)定義: function method(x , y){…} 參數(shù)同樣不用匹配類型;
可以通過(guò) arguments.length 屬性來(lái)確定參數(shù)個(gè)數(shù)來(lái)創(chuàng)建不確定參數(shù)的函數(shù)如:
??? function noArguments(){
????????????? var len = arguments.length;
????????????? for(var i=0;i<len;i++){
????????????? ????????????? var fristArgument = noArguments.arguments[i];
??????????????????????????? ………// 通過(guò) ? noArguments.arguments[i] 獲得參數(shù);
}
}
c)??????? 對(duì)象定義:
定義方式一 ? 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)??????? 使用對(duì)象:
var obj1 = new obj();
var new_x = obj.x; // 是用屬性的方式 1
var new_y = obj[‘y’]; // 是用屬性的方式 2
二 內(nèi)置對(duì)象:
?????? a) 數(shù)組對(duì)象( Array ):
???????????????????? var newArry =new Arry(n);
???????????????????? var newArry =new Arry(“one”,”two”,”there”,”four”);
?????? 注:屬性和方法不再列出。
??????
b) 字符串對(duì)象( String ):
???????????????????? var newStr =”xxx”;
???????????????????? var newStr=new String(“xxx”);
?????? 對(duì)字符串的比較直接使用 ”= =”
??????
?????? c) 數(shù)學(xué)對(duì)象( Math )
????????????? 注意:使用數(shù)學(xué)對(duì)象時(shí)不需要?jiǎng)?chuàng)建該對(duì)象,直接使用即可;
????????????? 例如: Math.PI; // 屬性的使用
Math.abs(x);// 方法的使用;
d) 日期對(duì)象( Date )
??????? var date1 =new Date();
????????????? var date2 =new Date(“ 日期子串 ”);
????????????? var date3 =new Date( 年,月,日, [ 時(shí),分,秒,毫秒 ]);
????????????? var date4 =new Date( 毫秒 );
?
<%@ page
???
language="java"
???
extends="指定父類"
???
import="導(dǎo)入JAVA類" ??
???
session="false||true是否使用session對(duì)象"
???
buffer="定義緩沖區(qū)大小默認(rèn)8kb"
???
autoFlush="false||true自動(dòng)清除緩沖區(qū)"
???
isThreadSafe="false||true是否處理多請(qǐng)求"
???
info="定義相關(guān)信息.txt"
???
errorPage="url指定錯(cuò)誤頁(yè)"
???
contentType="編碼方式"
???
isErroPage="false||true是否為處理異常頁(yè)"
%>?
<%@ include
file
="URL指定要包含的另外一個(gè)JSP文件,*.jspf,*.htmlf"%>
<%@ taglib
uri
="" prefix=""%>
常用的JSP動(dòng)作元素
1
???
<jsp:useBean
???????
id="指定該bean對(duì)象名"
???????
scope="page||request||session||application bean的作用域"
???????
class="bean的class文件名,注意不能與beanName屬性一起使用"
???????
beanName="*.class或*.ser或bean包的名字,緊當(dāng)bean不存在于指定???????????? 的作用域時(shí)才使用 "
???????
type="與class或beanName一起使用,指定要實(shí)例化的bean的類或接口"
???
>
???
<jsp:setProperty name="" property="" value="">實(shí)例話bean的初始特性值。
???
</jsp:/useBean>
2??
???
<jsp:setProperty
???????
name="對(duì)應(yīng)<jsp:useBean>中的id"
???????
property="*||bean屬性名 通過(guò)request參數(shù)設(shè)定bean屬性值"
???????
value="為bean屬性值指定值,需要指定bean屬性名"
???
/>
3??
???
<jsp:getProperty
???????
name="對(duì)應(yīng)<jsp:useBean>中的id"
???????
property="對(duì)應(yīng)想要獲得的屬性值名"
???
/>
4
???
<jsp:include>
???????
page="要包含文件的相對(duì)地址"
???????
flush="true||false 是否清空緩沖區(qū)"
???????
<jsp:param name="" value="" 可以傳遞一個(gè)參數(shù)/>
???
</jsp:include>
5
???
<jsp:forward page="URL或者一個(gè)表達(dá)式,用于將請(qǐng)求的頁(yè)面轉(zhuǎn)向其他頁(yè)面">
???????
<jsp:param name="" value="">可以傳遞參數(shù);
???
</jsp:forward>
6??
???
<jsp:param
name="" value="">
<%! %>
變量和方法聲明塊,要使用“;”結(jié)尾
<%? %>
腳本塊 可以聲明局部變量 但是不能定義方法!
<%= %>
表達(dá)式 注意內(nèi)部不能使用“;”
軟件準(zhǔn)備: ( 我使用的是 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 開(kāi)發(fā)插件
eclipse-JDT-3.1zip
//----------- 語(yǔ)言漢化包 ------
NLpack1-eclipse-JDT-3.1.zipNLpack1-eclipse-platform-3.1-win32.zip
這些插件和軟件都是在官方網(wǎng)站上下載的,不知道地址的同學(xué)可以搜索一下就可以了。我就不浪費(fèi)口水了。在進(jìn)行以下安裝之前要先安裝 JDK ,一路下一步即可。完成后設(shè)置三個(gè)環(huán)境變量(如果原來(lái)系統(tǒng)有就不要添加了) JAVA_HOME(jdk 安裝目錄 )PATH(jdk 安裝目錄下的 BIN 目錄 )CLASSPATH( 類文件目錄,記到前面加個(gè) .; ?)
?????? 第一步:安裝 eclipse3.1
直接解壓 eclipse-platform-3.2-win32.zip 到一個(gè)目錄下,建議目錄名路徑名之間不要有空格和漢字(原因我也不太說(shuō)的清楚),好了之后再解壓 eclipse-JDT-3.1zip 到同一目錄中,注意要直接覆蓋而不要將解壓后的內(nèi)容放在 eclipse 目錄下,完成之后用同樣的方法解壓后面兩個(gè)漢化包覆蓋 eclipse 目錄。
?????? 第二步:安裝 tomcat
將 apache-tomcat-5.5.16.zip 直接解壓到一個(gè)目錄即可,完成之后建立一個(gè)系統(tǒng)環(huán)境變量叫 TOMCAT_HOME 并把值設(shè)置為剛才 tomcat 的安裝目錄 ;
第三步:安裝 tomcatPluginV31.zip
????????????? 將它解壓后的文件夾拷貝到 X:\....\eclipse\plugins 文件夾下面即可;
?????? 第四步:安裝 lomboz
????????????? 安裝漢化包插件一樣,直接解壓覆蓋原來(lái)的 eclipse 目錄即可;
?????? 好了,安裝完成了!現(xiàn)在開(kāi)始配置了:
??????
需要配置的地方用圖片表示:大家照這改就可以了!(注意安裝目錄要使用你實(shí)際安裝的目錄不要照到抄哈!)
???圖片在http://corsair.java.photo.163.com 的work目錄下。
?