Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入postgres DB-印地语_Java_Postgresql_Multilingual - Fatal编程技术网

Java 插入postgres DB-印地语

Java 插入postgres DB-印地语,java,postgresql,multilingual,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\u from将数据转换回印地语时,我得到以下错误: select convert_from('\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x97

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

但是,当我尝试使用
convert\u 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),只需使用:

当数据库不是UTF8(但客户端编码是UTF8)时,使用
convert\u from()
&转义文字:

当您的数据库和客户端编码都不是UTF8时,请使用简单文本使用
convert\u from()
&
decode()

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(decode('e0a4a8e0a4bee0a497e0a4b0e0a4bfe0a495', 'hex'), 'UTF8')

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

  • Yum在centos7上安装印地语

  • 在任何版本中安装postgres 9或10

  • 创建表aayurved(utpaad char(41)、sankhya char(5)、mishran1 char(40)、mishran2 char(41))

  • 插入到Ayurved值中('देताबेस',0,'लोकिनग','सेशन');


  • 尝试使用\\或//尝试使用'\\'来转义'\',尝试过,但它没有将十六进制代码转换为我的印地语文本在丹麦和挪威,我们使用字母æ、ø和å。我可以将文本直接保存到postgres,如“插入食物值('blåbærsyltetøj')”(蓝莓酱)只要数据库与插入的文本具有相同的编码。在我的情况下,我使用UTF-8。为我工作的解决方案1也将尝试使用prepared语句
    convert_from(decode('e0a4a8e0a4bee0a497e0a4b0e0a4bfe0a495', 'hex'), 'UTF8')