tx-cary 发表于 2004-12-28 18:06:35

mysql的默认字符集设置成gb2312后中文还是问号

我尝试了两种方法,一个是在启动服务时加参数:
mysqld --default-character-set=gb2312

另一种是修改my.cnf,在字段下加上:
default-character-set = gb2312

但是导入的中文数据全都是问号。这是否和编译参数有关啊?我以前用Mandrake的rpm包安装mysql都没有遇到这种问题,如今换Arch了就有了。找了许多资料都没能解决。

jiangtao9999 发表于 2004-12-28 18:46:14

系统的编码呢?

tx-cary 发表于 2004-12-28 20:31:35

LANGUAGE=zh_CN.GB2312:zh_CN:zh
LANG=zh_CN

LANGUAGE="en_CN:en_US:en_GB:en"
LANG=en_US.UTF-8
我都试过了,都不行啊。(你说的系统编码是这个意思吗?)

tx-cary 发表于 2004-12-28 20:32:28

在phpmyadmin中显示的总是:
MySQL 字符集: UTF-8 Unicode (utf8)

涩兔子 发表于 2004-12-28 21:41:21

是做MySQL应用么?

如果PHP程序中设置了charset=gb2312
多半没问题 :mrgreen:

jiangtao9999 发表于 2004-12-29 11:41:50

应用程序和 mysql 的编码一样才可以。

不然即使 mysql 里的是 GB2312 ,但系统还是会把它当成 UTF-8 处理。

phpmyadmin 不会自动使用和 mysql 的编码方案的,你手动换成 gb2312 看看~~

涩兔子 发表于 2004-12-29 12:45:04

那就涉及更详细的meta标签了

不过不知道tx-cary的具体应用是什么 :?:

lxn_cjs 发表于 2004-12-29 15:07:27

改变字符集要在编译时使用 参数--with-charset="charset"
你使用得方法是控制mysql提示使用得语言 其支持得语言种类看你使用得版本了

tx-cary 发表于 2004-12-29 23:10:06

我的应用是这个网站:http://playpc.51.net 的本地调试。

我将charset=gb2312也设置进php.ini中了,但是还是不行。php程序在51.net服务器上还有Mandrake服务器上都是运行正常的啊。

附上my.cnf php.ini httpd.conf 三个文件打包

tx-cary 发表于 2004-12-30 15:55:48

贴出其编译源码,大家帮看看。with-extra-charsets=complex是否包含了gb2312了?


./configure --prefix=/usr --libexecdir=/usr/sbin \
    --without-debug --without-docs --without-bench \
    --with-innodb --with-bdb --enable-local-infile --with-openssl \
    --with-extra-charsets=complex

# fixes
cp config.h config.h.old
cat config.h.old | sed 's|^.*HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE.*$|#define HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE|g' >config.h
cp sql/mysqld.cc sql/mysqld.cc.old
cat sql/mysqld.cc.old | sed 's|size_socket|socklen_t|g' >sql/mysqld.cc
cp sql/mini_client.cc sql/mini_client.cc.old
cat sql/mini_client.cc.old | sed 's|SOCKOPT_OPTLEN_TYPE|socklen_t|g' >sql/mini_client.cc

make || return 1
make DESTDIR=$startdir/pkg install
rm -rf $startdir/pkg/usr/{mysql-test,sql-bench}
install -D -m644 ../my.cnf $startdir/pkg/etc/my.cnf
install -D -m755 ../mysqld $startdir/pkg/etc/rc.d/mysqld
install -D -m644 ../mysqld.conf.d $startdir/pkg/etc/conf.d/mysqld
ln -sf mysql/libmysqlclient.so.14 $startdir/pkg/usr/lib/libmysqlclient.so.14
ln -sf libmysqlclient.so.14 $startdir/pkg/usr/lib/libmysqlclient.so
ln -sf libmysqlclient.so.14 $startdir/pkg/usr/lib/libmysqlclient.so.1
# for some reason, 4.1.8 doesn't name the libraries properly
cd $startdir/pkg/usr/lib/mysql
rm libmysqlclient libmysqlclient.14
mv libmysqlclient.14.0.0 libmysqlclient.so.14.0.0
ln -sf libmysqlclient.so.14.0.0 libmysqlclient.so.14
ln -sf libmysqlclient.so.14.0.0 libmysqlclient.so

涩兔子 发表于 2004-12-31 08:20:48

--with-extra-charsets=complex只是包含了附加字符设置=复杂的字符 :idea:

--without-debug --without-docs --without-bench取消了debug,取消了文档,取消了bench,也没有负面影响

你是安装的MySQL Source Distribution么?

“在phpmyadmin中显示的总是:
MySQL 字符集: UTF-8 Unicode (utf8) ”和MySQL的字符配置关系大么?phpmyadmin是通过META标签来确定字符编码的“<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />”

tx-cary 发表于 2004-12-31 08:32:38

MySQL Source Distribution? 我是安装的二进包啊。那个是Arch提供的编译源码,就是说他们是按照这个源码编译的二进包。是否要自己编译过,把--with-extra-charsets改为gb2312? 或者加上--with-charset=gb2312?

涩兔子 发表于 2004-12-31 09:03:18

如果是二进制包,请按照MySQL官方安装说明step by step
   
   shell> groupadd mysql
   shell> useradd -g mysql mysql
   shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
   shell> cd mysql-VERSION
   shell> ./configure --prefix=/usr/local/mysql
   shell> make
   shell> make install
   shell> cp support-files/my-medium.cnf /etc/my.cnf
   shell> cd /usr/local/mysql
   shell> bin/mysql_install_db --user=mysql
   shell> chown -R root.
   shell> chown -R mysql var
   shell> chgrp -R mysql .
   shell> bin/mysqld_safe --user=mysql &

tx-cary 发表于 2004-12-31 15:36:10

好象就是configure的时候什么参数都不加是吗?我试试看。编译好痛苦啊……

涩兔子 发表于 2004-12-31 15:50:47

MySQL的安装时间是很长 :mrgreen: 所以才有了coffee time

编译的时候看看其他的书or网页吧
页: [1] 2
查看完整版本: mysql的默认字符集设置成gb2312后中文还是问号