如果mysql的中文问题很好解决的话,为什么有这么多人要问?
我就是不理解为什么中文编码兼容性的问题这么难搞定.到底这是谁的责任???
一个好的产品应该是便于使用才对呀.为什么会这样?我在mysql的命令行中输入以下命令所返回的结果如下:
>status;--------------
mysql Ver 14.12 Distrib 5.0.15, for Win32 (ia32)
Connection id: 1
Current database: instartdb1
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.15-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: gb2312
Db characterset: gb2312
Client characterset: gb2312
Conn. characterset: gb2312
TCP port: 3306
Uptime: 11 min 16 secThreads: 1 Questions: 54 Slow queries: 0 Opens: 2 Flush tables: 1 Open tabl
es: 8 Queries per second avg: 0.080
--------------我再输入一个命令:
mysql>show variables like 'char%';返回如下结果:-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | gb2312
|
| character_set_connection | gb2312
|
| character_set_database | gb2312
|
| character_set_results | gb2312
|
| character_set_server | gb2312
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets/ |
+--------------------------+----------------------------------------------------
-----+
7 rows in set (0.17 sec)我再打开my.ini,可以看到:[client]
port=3306
[mysql]
default-character-set=gb2312
... ...
[client]
port=3306
[mysql]
default-character-set=gb2312如果说以上信息说明我的mysql的字符集编码是gb2312的,对不对?
那么我创建一个数据库:create database test8 character set gb2312; 这样的指令应该不犯法吧?
现在到我的后台代码去看一下我是怎么连数据库的:(这是applicationContext.xml中的配置代码)<property name="jdbcUrl">
<value>jdbc:mysql://localhost:3306/instartDB1??useUnicode=true&characterEncoding=gb2312</value>
</property>这样的连接设置不至于会造成数据库的字符集的不兼容吧?
在mysql命令行中可以对数据表插入中文并正确显示,但不是显示在网页,而是显示在黑黑的屏幕上.
屏幕上显示的是???号.
我的service类中的相关代码是: public void addArticleSort(ActionForm form){
ArticleSort arSort = new ArticleSort();
DynaActionForm arForm = (DynaActionForm)form;
String sortName = (String)arForm.get("sortName");
String sortTitle = (String)arForm.get("sortTitle");
if(null==sortName || null==sortTitle)
return;
try {
sortName = new String(sortName.getBytes("gb2312"));
sortTitle = new String(sortTitle.getBytes("gb2312"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("sortName:" + sortName);
System.out.println("sortTitle:" + sortTitle);
arSort.setName(sortName);
arSort.setTitle(sortTitle);
this.articleDao.addArticleSort(arSort);
}上面的try代码块就算删掉,也一样回显乱码.我的前台jsp的头部代码是这样的:<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%String path = request.getContextPath() + "/"; %>
<%request.setCharacterEncoding("gb2312"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>文章管理</title>
... ...如果我说我的页面提交的字符集和数据库的会对应,你们应该相信吧?
当然在页面上数据库回显是用el表达式和struts的c标签结合来控制输出的,但得到的都是问号:
部分代码:已有类别:... ...
<select>
<c:choose>
<c:when test="${empty sortList}">
<option></option>
</c:when>
<c:otherwise>
<c:forEach items="${sortList}" var="sort">
<option value="${sort.name }">${sort.title }</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
... ...
我不知道对于mysql的乱码我还能做什么?当我请教我的同学或同事时,有的人懵懵懂懂,糊里糊涂就装后使用了,一点中文问题都没有,可能是天生命好吧..我小心安装,七设置八设置,可mysql还是乱码?
mysql真对不起我了.虽然本人水平有限,可经过上述设置后如果还没设置够的话,我只能说,mysql的产品本身有问题.在这里发贴也是没办法的事情..希望哪位高手能指出我的错误和不足,以便让我能早日解决这个中文乱码的问题.谢谢大家!!
我就是不理解为什么中文编码兼容性的问题这么难搞定.到底这是谁的责任???
一个好的产品应该是便于使用才对呀.为什么会这样?我在mysql的命令行中输入以下命令所返回的结果如下:
>status;--------------
mysql Ver 14.12 Distrib 5.0.15, for Win32 (ia32)
Connection id: 1
Current database: instartdb1
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.15-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: gb2312
Db characterset: gb2312
Client characterset: gb2312
Conn. characterset: gb2312
TCP port: 3306
Uptime: 11 min 16 secThreads: 1 Questions: 54 Slow queries: 0 Opens: 2 Flush tables: 1 Open tabl
es: 8 Queries per second avg: 0.080
--------------我再输入一个命令:
mysql>show variables like 'char%';返回如下结果:-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | gb2312
|
| character_set_connection | gb2312
|
| character_set_database | gb2312
|
| character_set_results | gb2312
|
| character_set_server | gb2312
|
| character_set_system | utf8
|
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets/ |
+--------------------------+----------------------------------------------------
-----+
7 rows in set (0.17 sec)我再打开my.ini,可以看到:[client]
port=3306
[mysql]
default-character-set=gb2312
... ...
[client]
port=3306
[mysql]
default-character-set=gb2312如果说以上信息说明我的mysql的字符集编码是gb2312的,对不对?
那么我创建一个数据库:create database test8 character set gb2312; 这样的指令应该不犯法吧?
现在到我的后台代码去看一下我是怎么连数据库的:(这是applicationContext.xml中的配置代码)<property name="jdbcUrl">
<value>jdbc:mysql://localhost:3306/instartDB1??useUnicode=true&characterEncoding=gb2312</value>
</property>这样的连接设置不至于会造成数据库的字符集的不兼容吧?
在mysql命令行中可以对数据表插入中文并正确显示,但不是显示在网页,而是显示在黑黑的屏幕上.
屏幕上显示的是???号.
我的service类中的相关代码是: public void addArticleSort(ActionForm form){
ArticleSort arSort = new ArticleSort();
DynaActionForm arForm = (DynaActionForm)form;
String sortName = (String)arForm.get("sortName");
String sortTitle = (String)arForm.get("sortTitle");
if(null==sortName || null==sortTitle)
return;
try {
sortName = new String(sortName.getBytes("gb2312"));
sortTitle = new String(sortTitle.getBytes("gb2312"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("sortName:" + sortName);
System.out.println("sortTitle:" + sortTitle);
arSort.setName(sortName);
arSort.setTitle(sortTitle);
this.articleDao.addArticleSort(arSort);
}上面的try代码块就算删掉,也一样回显乱码.我的前台jsp的头部代码是这样的:<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%String path = request.getContextPath() + "/"; %>
<%request.setCharacterEncoding("gb2312"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>文章管理</title>
... ...如果我说我的页面提交的字符集和数据库的会对应,你们应该相信吧?
当然在页面上数据库回显是用el表达式和struts的c标签结合来控制输出的,但得到的都是问号:
部分代码:已有类别:... ...
<select>
<c:choose>
<c:when test="${empty sortList}">
<option></option>
</c:when>
<c:otherwise>
<c:forEach items="${sortList}" var="sort">
<option value="${sort.name }">${sort.title }</option>
</c:forEach>
</c:otherwise>
</c:choose>
</select>
... ...
我不知道对于mysql的乱码我还能做什么?当我请教我的同学或同事时,有的人懵懵懂懂,糊里糊涂就装后使用了,一点中文问题都没有,可能是天生命好吧..我小心安装,七设置八设置,可mysql还是乱码?
mysql真对不起我了.虽然本人水平有限,可经过上述设置后如果还没设置够的话,我只能说,mysql的产品本身有问题.在这里发贴也是没办法的事情..希望哪位高手能指出我的错误和不足,以便让我能早日解决这个中文乱码的问题.谢谢大家!!
解决方案 »
- datebox 問題
- localhost可以访问,但127.0.0.1不能访问?
- 哪位高手教下,简单的方法调用??
- 在线等。。关于 spring-security框架 登录的问题。。。
- Struts2的小问题
- 求救!用JAVA实现网络管理中的配置管理!
- eclipse3.0.1+lomboz+tomcat5.0.28连html文件也报错
- spring中,这种情况怎么使用IoC?
- web服务器和EJB服务器分开在不同的机子上部署怎么实现啊?
- 请教:急 如何用JSP 连接 VB 的 COM
- (高分)如何EJB实现对SQLServer 2000/Oracle9i中DateTime字段读写操作???还是都用varchar作为该字段类型更好(优缺点)??
- 急!!寻找java师傅!
<%@ page session="true" %>
<%@ page contentType="text/html;charset=gb
jsp 页面用下面3句语句来保证是gbk 编码
<%@ page session="true" %>
<%@ page contentType="text/html;charset=gbk" %>
<%@page pageEncoding="gbk"%>
<%request.setCharacterEncoding("gbk");%>
数据库连接用如下语句
String ConnStr ="jdbc:mysql://localhost:3306/test?user=michael&password=123456&useUnicode=true&characterEncoding=gbk" ;
并且在mysql的my.ini的内容如下
basedir=D:/mysql
#bind-address=127.0.0.1
datadir=D:/mysql-data/data
default_character_set=gbk
#language=D:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe
user=michael
password=123
[client]
default_character_set=gbk
读jsp页面之间传递的参数在页面显示正常
在dos命令行下插入数据后,显示也正常 其中一条插入语句如下:
<jsp:useBean id="reg" scope="page" class="test.chatreg" />
String strSQL="insert into chatreg(username , password , email ,homepage )
values('" + regName + "', '" + regPassword +"' , '" + regEmail + "' , '" + regHomepage + "') ";
reg.executeQuery(strSQL);
name = request.getParameter("name").getBytes("iso8859_1","gb2312");
public static String tran(String temp) {
String target=null;
if(temp==null||temp==""){
return "";
}else{
try{
target=new String(temp.getBytes("ISO-8859-1"));
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}
return target;
}
}调用类次这样的方法来