也谈MYSQL数据库的中文问题

news/2024/5/18 22:59:26 标签: 数据库, mysql, string, jdbc, exception, null
中文显示问题一直是困扰我们的一个难题,不信你上google搜索一下,这类的问题和解答可以说是铺天盖地,好多网站甚至将其提出来作为专题来讨论,管中窥豹,可见一斑。

开始也曾为这个问题头疼,上网查阅大量的资料和解决方法,终于找到了一种既简单又好用的办法,以JSP+MYSQL存储为例,简单介绍一下。

配置:
W2K+Resin+Mysql

当页面<%@ page contentType="text/html;charset=gbk"%>使用GBK(或者GB2312)编码后,页面中的中文都可以正常显示(<%out.println("能正常显示中文吗?");%>)。但是涉及到数据库的存取时,您常常会看到令人头疼的乱码。输出SQL执行的字符串,例如:insert into table values('1','旺财','20','男'); 这时候可以看到显示的都是中文,但是当你打开数据库查看记录的时候看到还是乱码,晕!为什么?如果这时候你从MYSQL控制台命令行下输入上面的语句执行时,再查看数据库记录,咦!没有问题呀,执行同样的语句,为什么得到不一样的结果呢?看来JDBC是难脱其咎了。

简而言之解决方法:
连接数据库时:jdbc:mysql://localhost/test?user=root&password=&useUnicode=true&characterEncoding=ISO-8859-1",指明编码为ISO-8859-1,我看了一下MYSQL的相关文件,它默认的编码就是ISO-8859-1,但是在这里不指明的话还是有问题,中文仍旧不能正常显示(到底为什么其实我也不是很清楚)。这样在往数据库中存放的时候就正常了。

从数据库中读取数据时,如果用rs.getString("name")的话,乱码又出来了,这还是一个编码转换的问题,下面给一个转换函数:

<%
/********************************************
 函数名:toGB
 作  用:将ISO8859字符集转换为GB2312字符集
         解决数据库中文显示问题
 参  数:iso ----要转换的字符串
 返回值: gb ----转换后的字符串
********************************************/
%>
<%! public String toGB(String iso)
{
  String gb=null;
  if (iso != null) {
try {
gb=new String(iso.getBytes("ISO-8859-1"),"GB2312");
} catch (Exception e) {
gb=null;
}
  }
 return gb;
}
%>

从数据库中读取数据时toGB(rs.getString("name"),那么数据库中的中文就会正常显示了。

 

http://www.niftyadmin.cn/n/611517.html

相关文章

RHEL7网络管理

第一种&#xff1a;修改网卡配置信息 [rootlocalhost ~]# vim etc/sysconfig/network-scripts/ifcfg-eno16777736更改配置文件 TYPEEthernet (网卡类型) BOOTPROTOstatic (地址分配模式) NAMEeno16777736 (网卡名称) ONBOOTyes (是否启动) IPADDR192.168.10.10 (ip地址)…

bilibili大学_C语言作业_day04

1.在屏幕上输出以下图案&#xff1a; * *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** * 2.求出0&#xff5e;999之间的所有“水仙花数”并输出。 “水仙花数”是指一个三位数&…

bilibili大学_C语言作业_day05

1.完成猜数字游戏。 2.写代码可以在整型有序数组中查找想要的数字&#xff0c; 找到了返回下标&#xff0c;找不到返回-1.&#xff08;折半查找&#xff09; 3.编写代码模拟三次密码输入的场景。 最多能输入三次密码&#xff0c;密码正确&#xff0c;提示“登录成功”,密码…

RHEL7搭建Discuz论坛

RHEL7中配置 关闭防火墙和selinux [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0安装php [rootlocalhost ~]# yum install php* -y安装httpd服务 [rootlocalhost ~]# yum install httpd -y安装数据库 [rootlocalhost ~]# yum install mar…

bilibili大学_C语言作业_day06

1.实现一个函数&#xff0c;打印乘法口诀表&#xff0c;口诀表的行数和列数自己指定&#xff0c; 输入9&#xff0c;输出9*9口诀表&#xff0c;输入12&#xff0c;输出12*12的乘法口诀表。 2.使用函数实现两个数的交换。 3.实现一个函数判断year是不是润年。 4. 创建一个数组…

基于JDBC的数据库连接池高效管理策略

在基于JDBC的数据库应用开发中&#xff0c;数据库连接的管理是一个难点&#xff0c;因为它是决定该应用性能的一个重要因素。本文在对数据库连接进行透彻分析的基础上&#xff0c;提出并实现了一个高效的连接管理策略&#xff0c;使得开发高性能的数据库应用变得相对容易。特别…

RAID和LVM磁盘阵列技术

RAID(独立磁盘冗余阵列) RAID是英文Redundant Array of Independent Disks的缩写&#xff0c;中文简称为独立冗余磁盘阵列。简单的说&#xff0c;RAID是一种把多块独立的硬盘&#xff08;物理硬盘&#xff09;按不同的方式组合起来形成一个硬盘组&#xff08;逻辑硬盘&#xf…

bilibili大学_C语言作业_day07

1.递归和非递归分别实现求第n个斐波那契数。 2.编写一个函数实现n^k&#xff0c;使用递归实现 3. 写一个递归函数DigitSum(n)&#xff0c;输入一个非负整数&#xff0c;返回组成它的数字之和&#xff0c; 例如&#xff0c;调用DigitSum(1729)&#xff0c;则应该返回1729&…