我需要将英语和阿拉伯语文本都插入到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中。
提前致谢!
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句