1. 程式人生 > >JDBC MySQL 中文亂碼問題 Android 中文亂碼

JDBC MySQL 中文亂碼問題 Android 中文亂碼

中文亂碼似乎是程式編寫中永恆的一個話題和難點,就比如MySQL存取中文亂碼,但我想做任何事情,都要有個思路才行,有了思路才知道如何去解決問題,否則,即使一時解決了問題,但過後不久又碰到同樣的問題可能又會急得抓狂,MySQL中文亂碼問題就是如此。

僅僅對MySQL中文亂碼的解決而言,我認為主要的一個原則可以歸結為五個字:“編碼一致性”,只要遵循了這個原則,那麼中文亂碼就不難解決,那麼何為“編碼一致性”呢?子猴總結為有如下四個方面的編碼必須保持一致,才能防止中文的亂碼,下面將具體講解。

首先我要設定的編碼為UTF8,為何要設定UTF8編碼呢?那是因為這是通用編碼,像中國通常使用的GBK、GB2312、Big5等只是針對中文而言,但是對其他文字就不適用了,為了使得這個問題的解決具有文字編碼通用性,所以我這裡設定了UTF8這個編碼。

編碼一致性涉及到的四個方面為:應用程式編碼、資料庫系統編碼、資料庫編碼、應用程式與資料庫系統的連線編碼。

1、  應用程式編碼

指的是你在程式檔案中的文字編碼,以jsp檔案為例來說明,就是你jsp的網頁編碼,比如:

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

在這樣的頁面中,往往是呼叫資料庫介面對資料庫進行存取操作。

2、  與之對應的資料庫系統編碼

資料庫系統就是你所用的MySQL(及其他資料庫系統),資料庫系統的編碼要與應用程式編碼一致,其編碼設定根據作業系統的不同可以通過以下方式設定

2.1、Windosw環境下的MySQL編碼設定

A、中止MySQL服務
B、在MySQL的安裝目錄下找到my.ini,如果沒有就把my-medium.ini複製為一個my.ini即可
C、開啟my.ini以後,在[client]和[mysqld]下面均加上default-character-set=utf8,儲存並關閉
D、啟動MySQL服務

(注:Windows環境下的設定我沒有驗證過)

2.2、Linux環境下的MySQL編碼設定

首先我們登入到mysql,執行:show variables like ‘character%’;來檢視資料庫系統當前的編碼方式,一般情況下,你會看到如下所示:

+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+

也就是預設編碼都是latin1,很顯然,我們要修改為UTF8。

通過:vi /etc/mysql/my.cnf修改my.cnf檔案,這裡需要注意的是,如果my.cnf檔案不存在,則進入到mysql的安裝目錄,通過執行:cp share/mysql/my-large.cnf /etc/my.cnf生成my.cnf檔案。

加入的內容如下:

在客戶端配置[client]下面新增:

### 預設字符集為utf8
default-character-set=utf8

找到[mysqld]部分,在下面新增:

### 預設字符集為utf8
default-character-set=utf8
### (設定連線mysql資料庫時使用utf8編碼,以讓mysql資料庫為utf8執行)
init_connect=’SET NAMES utf8′

完畢後重啟mysql服務,然後再通過執行show variables like ‘character%’;檢視如下:

mysql> show variables like ‘character%’;
+————————–+—————————-+

| 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/ |

+————————–+—————————-+

3、  資料庫編碼

改完資料庫系統編碼後,接下來輪到資料庫編碼了,請注意資料庫系統與資料庫的區別,資料庫指的是你所建立的資料庫Database及所包含的表,資料庫編碼設定很簡單,在建立資料表的時候設定,舉例如下:

create table Test

(

ID                   integer not null auto_increment,

NAME                 varchar(50) comment ‘測試欄位’,

TYPE                 integer,

primary key (ID)

)

default charset utf8;

其中default charset utf8就表示此表的字元編碼為utf8。

4、  應用程式與資料庫系統的連線編碼

連線編碼相當於應用程式與資料庫系統的溝通橋樑,同樣也需要設定編碼,我們以JDBC的連線語句來予以說明:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&user=test&password=111

上面的語句中為一個test的資料庫,使用者名稱為test,密碼為111的資料庫連線,其編碼為characterEncoding=UTF-8。

通過以上四個方面的設定,那麼mysql的中文亂碼就輕鬆解決了!

如果你過段時間不記得mysql的中文亂碼是如何解決的,那麼你只要知道以上的解決思路,我想解決起來肯定會很快的。

來源:子候部落格

相關推薦

JDBC MySQL 中文亂碼問題 Android 中文亂碼

中文亂碼似乎是程式編寫中永恆的一個話題和難點,就比如MySQL存取中文亂碼,但我想做任何事情,都要有個思路才行,有了思路才知道如何去解決問題,否則,即使一時解決了問題,但過後不久又碰到同樣的問題可能又會急得抓狂,MySQL中文亂碼問題就是如此。 僅僅對MySQL中文亂碼

解決jdbc MySQL中文亂碼問題

spa style mysql安裝 亂碼問題 img images mysql ges 安裝 進MySQL安裝目錄,打開my.ini        這兩個地方改成gbk               重啟服務解決jdbc MySQL中文亂碼問題

JSP Servlet JDBC MYSQL資料庫中文字元顯示為亂碼

這個過程中最終顯示為亂碼,是因為整個過程中字元編碼不統一導致。 要解決該問題,就是統一字元編碼。一般情況統一用UTF-8。 下面以UTF-8為例,解決中文字元顯示為亂碼 1.Input 文字編輯框一般接收GB18030編碼的字元 所以需要在Servlet獲取資料之前將Req

MySQL數據庫中文亂碼問題

pid page sets 防範 網站 filesyste linux x86_64 5-0 mysql> select * from books; +-----+---------------------------------+---------+------

ssm框架插入mysql數據庫中文亂碼問題解決

mar word ref def http reat pro xml文件 framework 1. 檢查web.xml <!-- 編碼過濾器 --> <filter> <filter-name>

Linux下Tomcat向MySQL插入數據中文亂碼解決辦法

中文亂碼解決辦法Linux下Tomcat向MySQL插入數據中文亂碼解決辦法 一、問題 在windows上面使用eclipse開發的項目在windows上面運行一切正常,部署到騰訊雲時出現向MySQL數據庫中插入數據是中文亂碼 二、解決辦法 1、嘗試一直接在linux上面使用insert語句插入中文,正常2、

MySQL+Toad for Mysql安裝,配置及導入中文數據解決亂碼等問題

下載 tools 不同 打開 show amd rac mysql\ 默認 1.下載MySQL5.7版本,安裝官網上的windows安裝版,下載地址為:https://dev.mysql.com/downloads/windows/installer/5.7.html 安

mysql 匯入表資料中文亂碼

方法一: 先在命令列設定為utf8,再匯入   1. use database_name; 2. set names utf8; (或其他需要的編碼) 3. source example.sql (sql檔案存放路徑)   方法二: 在sql檔案中加入以下程式碼 &nbs

Hibernate 3.2 與MySQL 5.6插入中文亂碼問題

我的環境是Spring 3.0.5+Hibernate 3.2 與MySQL 5.6 WEB專案,在使用者模組中建立使用者時需要將使用者物件寫入表中。 在UserDaoImpl中採用getHibernateTemplate().saveOrUpdate(user);實現,英文和數字完全沒問題。

arcgis android 中文註記亂碼解決方案

       從arcgis api for android 10.2開始,中文註記亂碼的問題就一直困擾我。有文章中指出,是因為android手機fonts目錄中預設字型庫不支援中文導致的。可以通過設定textsymbol的字型解決,經測試

通過linux遠端連線mysql,查詢結果中文亂碼小結

首先本地辦公環境為windows使用的是navicat連線的mysql navicat連線mysql時查詢結果正常 檢視編碼方式: mysql> show variables like ‘%character%‘; +----------------------

MySQL命令列插入中文亂碼,同時報錯

今天學習MySQL操作時遇到了兩個問題(windows環境下,powershell): 問題 命令列插入中文資料時,報錯: Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 命

MySQL CMD命令列中文出現亂碼

為什麼會出現中文亂碼呢? 這是因為Windows的CMD預設編碼是GBK,MySQL裡面是按照UTF-8編碼儲存資料的,所以CMD不支援自然就亂碼了。而剛才我們使用到的Navicat工具,由於它本身的編碼被設定為utf-8,所以我們的各種操作都能正常進行。 解決方案 在輸入

通過JDBC操作資料庫時出現中文亂碼的問題,Navicat

問題的發生 昨天我幫我同學做了一個前端加後端的專案,使用的是jdbc+Servlet+jsp技術。 但是通過junit測試向資料庫插入資料時,插入中文,在Navicat中是以問號顯示的。 獻上程式碼 @Test public void test1() t

mysql命令提示符顯示中文亂碼或插入值均為空白

如果是奔著解決問題而來,請直接跳到 四.5 希望能對你們有所幫助 一、前言 第一段話寫給自己:早在一年多前,剛剛上手mysql的時候,就對windows命令列下的mysql中文亂碼現象有所見聞。心裡也一直對此懷有芥蒂,畢竟之前是通過Navicat等資料庫視覺化工具來檢視資料,相當於是對這個現

jpa操作mysql亂碼以及中文查詢錯誤

如果MySQL表中欄位有中文,去查詢時報javax.persistence.NonUniqueResultException,需要一行結果返回多行的錯誤,最終定位到還是配置檔案中沒有指定MySQL配置的編碼的原因導致的。同jpa操作MySQL亂碼是一樣的修改辦法 需要指定配

MySQL 中儲存過程 中文亂碼問號???

mysql 中文亂碼一直是一個老大難的問題,接下來一一解決!!!! 資料庫儲存資料亂碼 儲存過程中資料亂碼 001 資料庫儲存資料亂碼 相信大家遇到最多就是資料庫中儲存資料,操作完之後,資料庫中中文亂碼,變為????問號。

ubantu,navicat for mysql 表中資料中文亂碼

問題: Linux下MySQL workbench連線資料庫,表中資料不亂碼,但是我下載安裝類Navicat for mysql 64位 英文版,其中顯示的中文資料亂碼 解決步驟:  1、下載好

linux下mysql出現中文亂碼中文問號)

  今天遇到一個很特別的情況,由於mysql的外網伺服器遭受了攻擊,無法不能使用視覺化的方式連線資料庫,這樣給我的資料查詢造成不小的麻煩,可是程式的問題往往是需要比對資料庫的資訊的,那怎麼辦?   後

Android 聯絡人在中文,繁體,和English語言切換時,中文聯絡人排序顯示亂碼

alps/packages/providers/ContactsProvider/src/com/android/providers/contacts/LocaleSet.java --- a/alps/packages/providers/ContactsProvider