關於linux中mysql中編碼的問題(UTF-8)

來源:互聯網
上載者:User
關於linux中mysql中編碼的問題(UTF-8)
今天用了一天時間來研究mysql中的編碼問題,辛苦總算沒有白費。
不管什麼時候,編碼一定要統一,這是保證資料能正確入庫的前提。
首先要配置你的mysql的預設編碼方式為UTF-8.
具體看my.cnf的配置.
(#cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf)
#下面是很重要的=====================================
[client]
#password             = your_password
port                  = 3306
socket                = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
default-character-set = utf8
#===============================
當你配置好了以後,進入mysql,執行#status,可以看到以下結果。
--------------
mysql  Ver 14.12 Distrib 5.0.41, for pc-linux-gnu (i686) using readline 5.0

Connection id:          1
Current database:       jsp
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.41-log MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 1 hour 12 min 21 sec

Threads: 2  Questions: 390  Slow queries: 0  Opens: 18  Flush tables: 1  Open tables: 8  Queries per second avg: 0.090
--------------
這就說明mysql編碼方式為UTF-8.

下面有一個問題就是tomcat編碼問題,每個頁面我都設成 contentType="text/html; charset=utf-8"  但最後用request.getParameter()得到還是亂碼,這隻能說明在請求時編碼方式不正確。
在要處理參數的頁面加入request.setCharacterEncoding("utf-8");
。這時就OK了。。。。

下面為測試檔案.
//index.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ include file="conn.jsp"%>
<html>
<head>
<title></title>
</head>
<body>
<div align="center" class="style1">
   <p>新增學生資訊</p>
  <form name="form1" method="post" action="add.jsp">
    <p><span>姓名:</span>      
      <input type="text" name="name">
    </p>
    <p>
      &nbsp;
      <input type="submit" name="queding" value="提交">
      &nbsp;
      <input type="reset" name="chongtian" value="重設">
</p>
    <p>&nbsp;    </p>
  </form>
  <p>&nbsp;  </p>
<%
ResultSet rs=stmt.executeQuery("select * from jsp");
rs.beforeFirst();
while(rs.next())
{
%>
<p><%=rs.getString("name")%></p>
<%
}
rs.close();
stmt.close();
conn.close();

%>
</div>
</body>
</html>

//add.jsp

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ include file="conn.jsp"%>
<html>
<head>
<title></title>
</head>
<body>
 
  <%
request.setCharacterEncoding("utf-8");//可以先取掉試試
String name=request.getParameter("name");
String sql="insert into jsp (name) values ('"+name+"')";
stmt.executeUpdate(sql);
stmt.close();
conn.close();
%>
<center>
<h2 >新增學生資訊</h2>
<p ><%=name%><br>
  新的資料已經添加到資料庫中!
  </p>
<p></p>
<form name="form1" method="post" action="index.jsp">
  <input type="submit" id="back" name="back" value="返回">
</form>
<p>&nbsp;</p>
</center>
</body>
</html>

//conn.jsp

<%
String host="localhost:3306";
String user="root";
String pw="******";
String db="jsp";
String tab="jsp";
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://"+host+"/"+db;
Connection conn=DriverManager.getConnection(url,user,pw);
Statement stmt=conn.createStatement();
%>

建立資料庫
mysql>create database jsp;
mysql>use jsp;
mysql> create table jsp(
    -> name varchar(20) default NULL
       -> );
執行mysql> show create database jsp;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| jsp      | CREATE DATABASE `jsp` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+

mysql> show create table jsp;
+-------+---------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                |
+-------+---------------------------------------------------------------------------------------------+
| jsp   | CREATE TABLE `jsp` (
  `name` varchar(20) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------+
mysql> inster into jsp(name) values('工');

mysql> select * from jsp;
+------+
| name |
+------+
| 工   |
+------+

有這樣的顯視,mysql沒什麼問題了。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.