You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL查询越南语字符时的#标识含义及查询方法

PostgreSQL命令行提示符与越南语字符查询解答

一、命令行提示符标识的含义

  • edudb_v2=#:这是PostgreSQL命令行客户端(psql)的正常交互提示符,其中edudb_v2是当前连接的数据库名称,#代表你以**超级用户(如postgres)**身份登录;如果是普通用户登录,提示符会显示为>。
  • edudb_v2'#:出现这个提示符是因为SQL语句未正确结束——PostgreSQL检测到你输入的字符串未闭合(单引号未配对),进入了多行输入等待状态,需要补全结束的单引号后才能执行语句。你遇到的情况大概率是Windows命令提示符的编码与psql不匹配,导致PostgreSQL未能正确识别到语句末尾的单引号。

二、PostgreSQL中查询越南语字符的方法

1. 确认数据库、表、字段的编码为UTF-8

PostgreSQL只有在UTF-8编码下才能完美支持越南语等带重音的Unicode字符,先检查相关编码:

  • 检查数据库编码:
    SELECT datname, pg_encoding_to_char(encoding) AS encoding FROM pg_database WHERE datname = 'edudb_v2';
    
  • 检查字段编码(以student表的first_name字段为例):
    SELECT relname, attname, pg_encoding_to_char(attencodingtype) 
    FROM pg_class 
    JOIN pg_attribute ON pg_class.oid = pg_attribute.attrelid 
    WHERE relname = 'student' AND attname = 'first_name';
    
    如果编码不是UTF-8,需要重新创建数据库/表时指定编码为UTF8(PostgreSQL中推荐用标准写法UTF8而非utf8,二者多数情况兼容)。

2. 正确设置客户端编码

在psql中执行以下语句临时设置客户端编码:

SET client_encoding = 'UTF8';

若要永久生效,可修改PostgreSQL配置文件postgresql.conf中的client_encoding参数为UTF8,保存后重启PostgreSQL服务。

3. 解决Windows命令提示符的编码冲突

Windows默认命令提示符编码为GBK,和psql的UTF-8编码不匹配会导致字符识别或显示异常,可先执行以下命令切换终端编码为UTF-8:

chcp 65001

切换后再启动psql,终端与psql编码统一,越南语字符的输入、显示及语句识别都会恢复正常。

4. 编写正确的查询语句

编码设置正确后,直接编写正常的查询语句即可,无需额外转义越南语重音字符:

SELECT * FROM student WHERE first_name = 'Nhật Ánh';

内容的提问来源于stack exchange,提问作者Thuận Nguyễn Hoàng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 16:32:37