这个看你的数据库编码了,使用默认的一般为SQLASCII编码,你在客户端手工插入的话,客户端显示正常的,但是程序查出来很可能就是乱码,在程序中插入的,程序查出来的正常,但客户端的很可能是乱码,如果数据库编码改为EUC_CN,建库的时候用createdb -E EUC_CN testdb,这样的话客户端和程序查出来都应该是正常的,当然你程序中相应有一些中文处理,比如设置编码为GBK,GB2312等。不过EUC_CN编码一个缺陷是它本身是个小字符集,所以一些生僻字它都是无法处理的。最好的办法是用UNICODE编码了,用UNICODE需要初始化一下,否则会出现一些莫名其妙的错误。先export LANG=C,  export LC_ALL=C, 然后initdb(具体用法网上很多,自己查下),initdb可以指定一个新的数据库目录,启动数据库的时候启动你initdb时指定的目录就行了。