mysql的默认字符集设置成gb2312后中文还是问号
我尝试了两种方法,一个是在启动服务时加参数:mysqld --default-character-set=gb2312
另一种是修改my.cnf,在字段下加上:
default-character-set = gb2312
但是导入的中文数据全都是问号。这是否和编译参数有关啊?我以前用Mandrake的rpm包安装mysql都没有遇到这种问题,如今换Arch了就有了。找了许多资料都没能解决。 系统的编码呢? LANGUAGE=zh_CN.GB2312:zh_CN:zh
LANG=zh_CN
和
LANGUAGE="en_CN:en_US:en_GB:en"
LANG=en_US.UTF-8
我都试过了,都不行啊。(你说的系统编码是这个意思吗?) 在phpmyadmin中显示的总是:
MySQL 字符集: UTF-8 Unicode (utf8) 是做MySQL应用么?
如果PHP程序中设置了charset=gb2312
多半没问题 :mrgreen: 应用程序和 mysql 的编码一样才可以。
不然即使 mysql 里的是 GB2312 ,但系统还是会把它当成 UTF-8 处理。
phpmyadmin 不会自动使用和 mysql 的编码方案的,你手动换成 gb2312 看看~~ 那就涉及更详细的meta标签了
不过不知道tx-cary的具体应用是什么 :?: 改变字符集要在编译时使用 参数--with-charset="charset"
你使用得方法是控制mysql提示使用得语言 其支持得语言种类看你使用得版本了 我的应用是这个网站:http://playpc.51.net 的本地调试。
我将charset=gb2312也设置进php.ini中了,但是还是不行。php程序在51.net服务器上还有Mandrake服务器上都是运行正常的啊。
附上my.cnf php.ini httpd.conf 三个文件打包 贴出其编译源码,大家帮看看。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 --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" />” MySQL Source Distribution? 我是安装的二进包啊。那个是Arch提供的编译源码,就是说他们是按照这个源码编译的二进包。是否要自己编译过,把--with-extra-charsets改为gb2312? 或者加上--with-charset=gb2312? 如果是二进制包,请按照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 & 好象就是configure的时候什么参数都不加是吗?我试试看。编译好痛苦啊…… MySQL的安装时间是很长 :mrgreen: 所以才有了coffee time
编译的时候看看其他的书or网页吧
页:
[1]
2