PostgreSQL数据库中的阿拉伯文和英文文本

时间:2014-06-19 08:34:28

标签: sql postgresql utf-8 character-encoding pgadmin

我需要将英文和阿拉伯文本插入PostgreSQL数据库。

我通过.bat脚本运行以下命令:

psql.exe --echo-all --username=postgres --dbname=dbname -f populate.sql

populate.sql有这样的陈述:

insert into table1 (column1, column2) VALUES (2, 'المستخدم ');

如果我通过pgadmin执行此操作,则可行。问题是我需要通过启动应用程序后运行的一些.sql填充脚本来完成此操作。

在那种情况下,我得到了胡言乱语,像这样:

العرض

我使用Encode in UTF-8 without BOM选项在Notepad ++中创建了脚本,因为UTF-8中的普通编码会在文件的开头添加一个额外的字符,并且不会进行某些插入。

我假设这是一个编码问题,但我还没弄清楚到底出了什么问题。 数据库采用UTF-8格式。

提前致谢!

1 个答案:

答案 0 :(得分:8)

默认情况下,Windows控制台不会说任何形式的Unicode,它会说" native"代码页。哪个代码页取决于您的Windows安装的语言设置。

如果你chcp 65001那么它会切换到utf-8。

总的来说,批处理/ cmd文件和Windows命令行中的文本编码处理非常糟糕。我通常建议您将基本上不是7位ASCII的任何内容放入单独的.sql文件中,并通过psql -f使用合适的client_encoding执行; PGCLIENTENCODING环境变量对此很有用。

所以试试:

SET PGCLIENTENCODING=utf-8
psql.exe --username=postgres --dbname=dbname -f populate.sql