mysql數據庫下載安裝和解決中文亂碼問題(吐血總結)

一,下載mysql
首先mysql 是廣爲人知且使用最爲廣泛的中小型數據庫之一,而且較爲方便易用,很多開發人員初步接觸數據庫都是從mysql開始,當然現在流行的數據庫有很多,大家可以網上搜索,這裏只介紹免安裝版本mysql-5.7.10-winx64(64位系統,當然上下幾個版本都差不多,安裝使用方法一樣)。首先官網下載mysql數據庫,友情鏈接:http://dev.mysql.com/downloads/mysql/

選擇你的系統和位數,官網上各種系統的都有:

這裏寫圖片描述

選擇 zip免安裝版下載(之前都是安裝版,學要手動安裝,現在比較流行免安裝版本,解壓之後配置一下即可食用)

這裏寫圖片描述

我寫的比較詳細,考慮到一些初學者的問題,老司機們自動忽略。


二, 開始進行數據庫的配置:

打開解壓後的文件夾你會看到有一個 my-default.ini文件,

這裏寫圖片描述
這是 裏面的 默認內容:

這裏寫圖片描述

這個文件是mysql數據庫的默認配置文件,你可以通過修改其中的內容更改數據庫的相關配置(包括很多,編碼,端口,等等可以再網上查),現在我們要做的是把這個文件拷貝一份,重新命名my.ini,
源文件不要管他,打開這個進行編輯:

這裏寫圖片描述
注意 不要寫錯,代碼送你直接複製吧:

[client]
port=3306
default-character-set=utf8
[mysqld]
 port=3306
character_set_server=utf8
basedir= D:\mysql-5.7.10-winx64\mysql-5.7.10-winx64
#解壓目錄
datadir= D:\mysql-5.7.10-winx64\mysql-5.7.10-winx64\data
#解壓目錄下data目錄
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#服務啓動目錄
[WinMySQLAdmin]
D:\mysql-5.7.10-winx64\mysql-5.7.10-winx64\bin\mysqld.exe

注意’#‘後面是註釋,就是綠色的,對於配置是無效的。

然後保存一下!!

然後是要配置環境變量!!可能有些小白還不太懂環境變量是什麼,百度百科這麼說:

環境變量(environment variables)一般是指在操作系統中用來指定操作系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等。
環境變量是在操作系統中一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。例如Windows和DOS操作系統中的path環境變量,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到path中指定的路徑去找。用戶通過設置環境變量,來更好的運行進程。

簡單來時就是這個服務在CMD命令行使用時所需要配置的屬性,以及路徑等,一般要在命令行下運行的程序,服務,都需要配置環境變量,比如Java開發環境,一些開發軟件的環境變量配置等。
現在就來配置環境變量:

這裏寫圖片描述
我的電腦,右鍵屬性,然後高級系統設置-環境變量-系統變量-找到“path” -編輯-(在這裏加了路徑的*.exe程序 都可以 打開CMD直接運行,)加上你的mysql解壓路徑“D:\mysql-5.7.10-winx64\mysql-5.7.10-winx64\bin”要到 bin目錄下 斌目錄下 一般都是 軟件可執行文件。網上還有其他方式 是填加 MYSQL_HOME 然後 在 path里加%MYSQL_HOME%bin的 其實都一樣。
到這 環境變量就好了。


三,安裝服務到系統中
因爲是下載的免安裝版本的,所繫系統中不會有mysql服務,需要手動安裝,你可以先在CMD下查看系統的服務

CMD命令

services.msc

如果之前沒安裝過就會發現沒有mysql服務,需要手動配置。
接下來 以管理員身份進入 dos命令窗口(非常重要), :
先初始化Data目錄:以前5.6版本自帶data目錄,不需要這一步!如果沒有這一步會無法啓動mysql服務,報錯MYSQL 服務無法啓動,在初始化之前,務必將data目錄底下的文件刪除掉。
在CMD窗口中輸入以下命令:

mysqld --initialize-insecure 

然後 進行服務安裝到電腦上:

mysqld install MySQL --defaults-file="D:\mysql-5.7.10-winx64\mysql-5.7.10-winx64\bin\my.ini"

默認文件就是 my.ini文件的位置
然後 就可以啓動服務了:

net start mysql

備註一下:移除安裝是mysqld remove;mysqld –initialize-insecure自動生成無密碼的root用戶;mysqld –initialize是自動生成隨機密碼用戶;

在查看一下 服務會發現 已經有了MYSQL而且 已經啓動

這裏寫圖片描述


四,進入數據庫:
這時直接打開命令行輸入

mysql -u root -p

然後會讓 輸入 password
致敬 Enter就可以,初始密碼爲空,你可以設置 你的密碼:

set password for root@localhost=password ('123');

“123” 就是 你的密碼 ”root“ 是你的賬戶名。


五,編碼相關
一切就緒你可以創建你的數據庫和表了,但是很多小白不知道其中暗藏殺機,很多人後知後覺,用了數據庫很久才發現或者遇到字符編碼問題,其實字符編碼問題經常會困擾我們很久,先介紹一下字符編碼:常用的:ASCII,utf8(或者UTF-8一樣),GBK,GB2312,ISO,Unicode等,在web開發或者系統開發中都會遇到很多類似情況,這裏簡單介紹一下mysql數據庫的編碼問題。
1,首先查看數據庫的編碼,進入mysql:

show veriables like 'char%';

這裏寫圖片描述

以及 命令:

status;

這裏寫圖片描述
可以看到 很多編碼,當然你如果想修改這些編碼可以通過命令:

SET character_set_client = utf8 ; 
SET character_set_server = utf8 ; 
SET character_set_database = utf8 ; 

但是一旦服務重啓,這些設置就會改變,這時可以通過修改my.ini文件的相關配置修改

[mysql]
default-character-set=utf8
[mysqld]
character_set_server=utf8

mysql是客戶端
mysqld是服務端
但有的時候這些修改也沒用,那就需要進入mysql配置程序進行配置,網上各種流傳 使用mysql。。config文件進去mysql的配置程序,但是官網上下載的免安裝版本的並沒有這個程序,當然裏面的很多可運行程序我也不知道幹嘛用的。但是一般通過以上方法就可以修改 mysql數據庫的編碼,把它設置成你需要的就可以的,一般推薦使用UTF-8,因爲它支持大多數的語言,包括簡體中文。


2,然後是數據庫的編碼,你可以在新建表的時候添設置。

create database 數據庫名 character set 'utf8';

如果不自己設置 就採用數據庫默認的編碼.
爲了確保 編碼一致,


3,數據庫中的表也要設置編碼,在建表的時候 就可以設置:

CREATE TABLE bian'ming ( 
`ID` varchar(40) NOT NULL default '', 
`UserID` varchar(40) NOT NULL default '', 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

通過 default charset=utf8設置編碼。
當然你也可以通過代碼修改,但是改的話之前保存的數據記錄不會改變

alter table 表名 character set=utf8;

至此 數據庫 端代碼 設置大概如此,如果有其他的編碼設置方式及方法 歡迎分享交流。


4,前端編碼然後關於web開發中前端中的編碼問題 有幾個想說一下,也是我遇到的問題,首先是jsp頁面中的

<%@ page language="java" import="java.util.*"  contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

(1),pageEncoding是jsp文件本身的編碼,就是整個jsp頁面是以這個編碼保存的文件。
在JSP標準的語法中,如果 pageEncoding屬性存在,那麼JSP頁面的字符編碼方式就由pageEncoding決定,否則就由contentType屬性中的 charset決定,如果charset也不存在,JSP頁面的字符編碼方式就採用默認的ISO-8859-1。


(2),ContentType

ContentType屬性指定了MIME類型和JSP頁面迴應時的字符編碼方式。MIME類型的默認值是“text/html”; 字符編碼方式的默認值是“ISO-8859-1”. MIME類型和字符編碼方式由分號隔開

pageEncoding的內容只是用於jsp輸出時的編碼,不會作爲header發出去的。

pageEncoding 是通知web server jsp的編碼。

關於JSP頁面中的pageEncoding和contentType兩種屬性的區別:

pageEncoding是jsp文件本身的編碼

contentType的charset是指服務器 發送給客戶端時的內容編碼

JSP要經過兩次的“編碼”,第一階段會用pageEncoding,第二階段會用utf-8至utf-8,第三階段就是由Tomcat出來的網頁, 用的是contentType。

**第一階段是**jsp編譯成.Java,它會根據pageEncoding的設定讀取jsp,結果是由指定的編碼方案翻譯成統一的UTF-8 JAVA源碼(即.java),如果pageEncoding設定錯了,或沒有設定,出來的就是中文亂碼。

第二階段是由JAVAC的JAVA源碼至Java byteCode的編譯,不論JSP編寫時候用的是什麼編碼方案,經過這個階段的結果全部是UTF-8的encoding的java源碼。

JAVAC用UTF-8的encoding讀取java源碼,編譯成UTF-8 encoding的二進制碼(即.class),這是JVM對常數字串在二進制碼(java encoding)內表達的規範。

第三階段是Tomcat(或其的application Container)載入和執行階段二的來的JAVA二進制碼,輸出的結果,也就是在客戶端見到的,這時隱藏在階段一和階段二的參數contentType就發揮了功效


contentType的設定.

pageEncoding 和contentType的預設都是 ISO8859-1. 而隨便設定了其中一個, 另一個就跟着一樣了(TOMCAT4.1.27是如此). 但這不是絕對的, 這要看各自JSPC的處理方式. 而pageEncoding不等於contentType, 更有利亞洲區的文字 CJKV系JSP網頁的開發和展示, (例pageEncoding=GB2312 不等於 contentType=utf-8)。

jsp 文件不像.java,.java在被編譯器讀入的時候默認採用的是操作系統所設定的locale所對應的編碼,比如中國大陸就是GBK,臺灣就是BIG5 或者MS950。而一般我們不管是在記事本還是在ue中寫代碼,如果沒有經過特別轉碼的話,寫出來的都是本地編碼格式的內容。所以編譯器採用的方法剛好可 以讓虛擬機得到正確的資料。

但是jsp文件不是這樣,它沒有這個默認轉碼過程,但是指定了pageEncoding就可以實現正確轉碼了。


(3)然後還有一個編碼
這裏寫圖片描述
就是 下面這個命令:

<meta name="content-type" content="text/html; charset=UTF-8">

它的作用是:通過標籤模擬response頭,起到告訴瀏覽器用utf8的編碼解析,在瀏覽器中的輸入或者取數據都是被設置爲utf8的編碼。
此外這個設置還有一個功能是設置jsp頁面中的form表單的post方法中使用的編碼也是utf8,這時就要把你的form方法都設爲

method=”post”,post和get方法的區別大家可以自己去查,這裏,因爲系統默認的get方法是ISO編碼的,所以用get方法會出現中文亂碼問題。所以使用post方法。

這三個 編碼 都設置成 統一的的utf8編碼 就會極大地減少 中文亂碼的可能性。


(4)此外 還有一種可能 是 你建的項目文件的編碼 我用的Myeclipse 中會有設置 windows-preferences-General-Workspace 中設置 項目工程編碼,以及空格的編碼。
這裏寫圖片描述

以上所有編碼設置統一 一般就不會 出現中文亂碼的問題,當然不排除其他原因和解決方法,歡迎提出意見交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章