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格式.
提前致谢!
默认情况下,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)
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |