插入postgres DB - 印地语

时间:2017-06-09 08:20:51

标签: 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。

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

http://rextester.com/SPGFDP50612

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

答案 1 :(得分:0)

  1. 在centos7上安装 hindi

  2. 安装任何版本的Postgres 9或10

  3. 创建表aayurved(utpaad char(41),sankhya char(5),mishran1 char(40),mishran2 char(41));

  4. 插入到aayurved值中('देغाबेस',0,'लोकिनग','सेशन');