存档

文章标签 ‘encoding’

关于用到mysql的应用,注意检查编码问题

2008年5月9日

对于集成了mysql的一些应用,比如proftpd的用户认证(已经栽在它上面两次了!!),用的时候一定要检查my.cnf里关于client端默认编码的事。
因为它没有地方让你执行什么set names=XXX这种语句,所以只能靠my.cnf里的默认设置

切记在与mysql有关的应用遇到问题要养成检查my.cnf的习惯,否则真是不知道怎么死的。。。

技术 , ,

mysql客户程序的中文乱码问题

2007年3月30日

自mysql5.0以来,自己的客户端程序在编码问题上越来越复杂了,乱码是常见的。

一般来说,对于想使用中文的情况(包括用C写的程序或是php等),在连接上数据库之后,应该执行一下set names ‘gb2312′(或是别的编码),这时再使用中文就是正常的了。

不过今天遇到的问题源于proftpd,用proftpd与mysql相连实现用户认证,而用户的家目录也是存在数据库中的,而我们FTP的家目录中含有中文,这样mysql返给proftpd就是乱码了,无法登录。可是你有没办法让proftpd给mysql发一个set names的命令,所以问题应该这么解决。编辑/etc/my.cnf,在其中加一个[client]字段,其下加一句:default-character-set=gb2312,这样应该就没问题了,相当于本机所有的mysql客户程序都默认用gb2312去连别的数据库。你可以用mysql程序连数据库,用show variables;命令来看看编码的几项是不是已经成了gb2312。不过这样还是不甚好,因为一个机器上的客户程序还是可能连多个数据库的,如果几个数据库用的编码不同,还是不成,所以如果条件许可,还是应该在程序执行时调用set names来指定当前连接的编码。

运维 ,

samba以及一般的mount中中文文件名的问题

2006年6月16日

mount时:
/etc/fstab写成这样:/dev/hda6  /some/path/E vfat  iocharset=cp936,shortname=winnt,codepage=936
mount命令这样打:mount -t vfat -O iocharset=cp936,shortname=winnt,codepage=936  dev/hda6  /some/path/E

/etc/samba/smb.conf的[globals]字段要加以下内容:
        dos charset = cp936
        unix charset = cp936

技术 ,