免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3796 | 回复: 14
打印 上一主题 下一主题

mysql 乱码问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-11 13:46 |只看该作者 |倒序浏览
/*原创  by showsa */

很多朋友一直在说mysql乱码问题,好像还没见过解释清楚的
今天我就在说一下吧

比如有朋友 数据库把数据库连接和表都设为 utf8
网页内容也是utf8编码,结果插入之后读取出来是 ?? 乱码
这种情况基本上都是client在作怪

默认php下的mysql client 默认CHARSET_NAME是latin1
所以php连上之后,把数据提交给"mysql"
mysql这是就看,table是utf8的,这是myql就默认提交上来的数据为latin1,于是就转换成utf8
如果 set names utf8 那么 mysql一看,哦,都是utf8啊,正好,也省得我费力了 直接入表


如果不想每次都set name utf8
解决方法

/*将 my_config.h
/* Define the default charset name */
#define MYSQL_DEFAULT_CHARSET_NAME "latin1"

/* Define the default charset name */
#define MYSQL_DEFAULT_COLLATION_NAME "latin1_swedish_ci"

改成

/* Define the default charset name */
#define MYSQL_DEFAULT_CHARSET_NAME "utf8"

/* Define the default charset name */
#define MYSQL_DEFAULT_COLLATION_NAME "utf8_general_ci"

然后编译mysql client

这样就不用 set names utf8 了
希望对大家有些帮助

论坛徽章:
0
2 [报告]
发表于 2006-04-11 13:57 |只看该作者
compile client library  with  character sets utf8

上面好像没说清楚

论坛徽章:
0
3 [报告]
发表于 2006-04-11 14:57 |只看该作者
在my.conf / my.ini 里面可以配置 init-connect=SET NAMES 'UTF-8';
来为每一个非root 的连接指定默认编码方式

论坛徽章:
0
4 [报告]
发表于 2006-04-11 14:57 |只看该作者
在PHP中解决乱码和JSP中解决乱码大同小异嘛

论坛徽章:
0
5 [报告]
发表于 2006-04-11 15:50 |只看该作者
我想问问jdbc的连接是不是绕过mysql client(mysql)直接连接到mysqld


还有哪位大哥知道下面的问题:
前些天我在my.cnf中配置了
[mysqld]一节
default-character-set=utf8 (文档说这个选项将废弃)或者
character-set-server=utf8
其中的任何一个都没有效果,服务器重启动后看服务器变量默认编码还是latin1

我的mysqlserver是ubuntu5.10自带的4.0
后来干脆从源代码直接编译,将默认编码编译为utf-8了事

论坛徽章:
0
6 [报告]
发表于 2006-04-11 16:07 |只看该作者
原帖由 xxjoyjn 于 2006-4-11 14:57 发表
在PHP中解决乱码和JSP中解决乱码大同小异嘛


这个还是有点不同的
JDBC里面可以接受characterEncoding的参数,手动指定connection的字符集
PHP里面的extension只能通过重新编译来定死字符集
或者配置服务器来定死字符集
弹性比JDBC差太多

[ 本帖最后由 donyad 于 2006-4-11 16:08 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-04-11 16:14 |只看该作者
原帖由 truncatei 于 2006-4-11 15:50 发表
我想问问jdbc的连接是不是绕过mysql client(mysql)直接连接到mysqld


还有哪位大哥知道下面的问题:
前些天我在my.cnf中配置了
[mysqld]一节
default-character-set=utf8 (文档说这个选项将废弃)或者
c ...


#
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[mysql]

default-character-set=utf8


# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8

哪里的文档说default-character-set 要被废弃?
官方的配置工具配置出来都是用这个键

论坛徽章:
0
8 [报告]
发表于 2006-04-11 16:22 |只看该作者
个人理解
JDBC没有什么绕过不绕过的概念
MySQL的JDBC驱动本身就是一个Client
而平时看到rpm里面分离的那个client,是mysql附带的一个工具而已,用来连server端,方便本地测试用的
JDBC MySQL-client-xxx.rpm 或者 PHP 的mysql.so 大家都是同等的地位,都是client
无非一些是让编程用的,一些是让用户直接命令行敲敲的而已

论坛徽章:
0
9 [报告]
发表于 2006-04-11 16:30 |只看该作者
原帖由 truncatei 于 2006-4-11 15:50 发表
我想问问jdbc的连接是不是绕过mysql client(mysql)直接连接到mysqld


还有哪位大哥知道下面的问题:
前些天我在my.cnf中配置了
[mysqld]一节
default-character-set=utf8 (文档说这个选项将废弃)或者
c ...


跟MSYQL的版本有关系的,好像说,MSYQL4.0.x的不能在my.cnf里这么设置的

论坛徽章:
0
10 [报告]
发表于 2006-04-11 16:49 |只看该作者
原帖由 donyad 于 2006-4-11 16:14 发表

哪里的文档说default-character-set 要被废弃?
官方的配置工具配置出来都是用这个键

MySQL 5.0 Reference Manual
...
5.3.1. mysqld Command-Line Options
...
(DEPRECATED) --default-character-set=charset
Use charset as the default character set. This option is deprecated in favor of -
-character-set-server. See Section 5.10.1, “The Character Set Used for Data and Sorting”.
...

呵呵,我知道官方工具也是生成这些键,不过新版文档里是这样写的
谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP