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

pte*_*ira 2 sql postgresql utf-8 character-encoding pgadmin

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

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

psql.exe --echo-all --username=postgres --dbname=dbname -f populate.sql
Run Code Online (Sandbox Code Playgroud)

populate.sql 有这样的陈述:

insert into table1 (column1, column2) VALUES (2, '???????? ');
Run Code Online (Sandbox Code Playgroud)

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

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

العرض

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

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

提前致谢!

Cra*_*ger 9

默认情况下,Windows控制台不会说任何形式的Unicode,它会说"本机"代码页.哪个代码页取决于您的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
Run Code Online (Sandbox Code Playgroud)