java - 插入 postgres 数据库 - 印地语

标签 java postgresql multilingual

我正在创建一个 Java 应用程序,我想在其中以英语以外的语言输入数据。例如。我想以印地语 (UTF-8) 字符输入数据。我已将数据转换为十六进制字符串 '\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95'

但是,当我尝试使用 convert_from 将数据转换回印地语时,我收到以下错误:

select convert_from('\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95', 'UTF8') aa

错误:

ERROR:  invalid hexadecimal digit: "\"
LINE 1: select convert_from('\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97\xe...
                            ^
********** Error **********

ERROR: invalid hexadecimal digit: "\"
SQL state: 22023
Character: 21

我正在使用 Postgres。

最佳答案

您有多种选择。如果您的数据库已经是UTF8(并且客户端编码也是UTF8),则只需使用Escape literals :

select E'\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95'

当您的数据库不是 UTF8(但您​​的客户端编码是 UTF8)时,请使用 convert_from() 和转义文字:

select convert_from(E'\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95', 'UTF8')

当您的数据库和客户端编码都不是 UTF8 时,请使用带有简单文字的 convert_from()decode():

convert_from(decode('e0a4a8e0a4bee0a497e0a4b0e0a4bfe0a495', 'hex'), 'UTF8')

http://rextester.com/SPGFDP50612

我已将数据转换为十六进制字符串 - 无论如何,当您使用准备好的语句并将原始数据绑定(bind)为其参数时,不应出现这些问题。您的语言绑定(bind)应该处理转换,而不是您。

关于java - 插入 postgres 数据库 - 印地语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44452791/

相关文章:

sql - Postgres - 如何在更新子查询中引用外部表?

postgresql - 如何在存在重复记录的 Postgres 数据库中对不同记录求和?

php - 多语言数据库 : which method is better?

android - 语言更改后刷新android应用程序

java - Android SqLite : Select Rows Where Values Exists in Another Database Table

java - libgdx 中 BoundingBox 和 Sphere 之间的碰撞检测

java - 什么是java :comp/env?

PostgreSQL 分区语法 FOR VALUES

TYPO3:在 Fluid 模板中硬编码的语言相关变量

java - 逻辑问题和创建表格