PG jdbc报错消息乱码问题
jdbc报错消息乱码:
org.postgresql.util.PsqlException:��������:����"postgres"Password��������
正确的应该是显示:
org.postgresql.util.PsqlException:ErrorFATAL:passwordauthenticationFailedforuser"postgres"
解决方式是:
将PG数据库data目录下的postgresql.conf配置文件中的lc_messages 设置为lc_messages = 'C'或者lc_messages = 'UTF8',重启数据库后即可。
注意:如果想要PG数据库系统表现得像没有区域支持一样,那么使用特殊的区域 C 或 POSIX
在PG中,一些区域性质的值一旦运行了 initdb 之后,你就再也不能更改它们了。LC_COLLATE 和 LC_CTYPE 就是这样的。它们影响索引的排序顺序,因此它们必需保持固定,其它区域性质可以在服务器启动的时候根据需要通过配置postgresql.conf变量来改变,如果你在 postgresql.conf 里面删除了这些缺省值,那么服务器将会继承来自运行环境的设置。
参考资料:
PG与操作系统的区域和字符集:http://blog.chinaunix.net/uid-354915-id-3502551.html
jdbc对pg7.3前后的字符集支持:http://acogitosis.krop.pl/2011-11-18-solution-to-postgres-jdbc-driver-ignoring-charset-directive-with-sql_ascii-database
该类问题主要出现在操作系统是中文的情况,英文的操作系统一般没问题。
相关问题:
安装PG的时候没有使用英语,但怎么所有的消息都是英文?!
安装过程中的语言选择仅是选择安装程序所使用的语言。要更改安装产品中消息的语言,请确保您安装了区域语言支持(Natural language support)功能组件。然后编辑安装的 postgresql.conf 配置文件,修改其中的lc_messages参数值为您需要的语言。
参考资料:
官方文档相关:
9.2英文:http://www.postgresql.org/docs/9.2/static/charset.html
9.3中文:http://58.58.27.50:8079/doc/html/9.3.1_zh/charset.html