Oracle10g oracle中utf-8到utf-16的转换

Oracle10g oracle中utf-8到utf-16的转换,oracle10g,utf,Oracle10g,Utf,我实际上以UTF-8格式在DB中存储资源。但当我现在想把它们全部转换成UTF-16时。因为德语有一些字符,比如1/4。现在我想避免这些。我尝试了以下语句,但在结果字符串中得到了一些框 > select convert('Inhalt hinzufügen','AL16UTF16LE','AL32UTF8') from dual result : it is not allowing me to copy paste it :(. But result is coming proper

我实际上以UTF-8格式在DB中存储资源。但当我现在想把它们全部转换成UTF-16时。因为德语有一些字符,比如1/4。现在我想避免这些。我尝试了以下语句,但在结果字符串中得到了一些框

> select convert('Inhalt hinzufügen','AL16UTF16LE','AL32UTF8') from dual
  result : it is not allowing me to copy paste it :(. But result is coming properly except boxes in middle of each character
有没有其他办法

SELECT *
  FROM v$nls_parameters
 WHERE parameter LIKE '%CHARACTERSET';
指示我的数据库字符集为WE8MSWIN1252,而我的国家字符集为AL32UTF16

当我使用
DUMP
功能查看实际存储在表中的数据时,这是输出:

SELECT dump( your_column, 1016 ), your_column
  FROM your_table
 WHERE some_key_column = <<value that gives you the row you're interested in>>
选择dump(your_列,1016),your_列
从你的桌子上

其中,由于数据库字符集是WE8MSWIN1252,所以某些键列=,因此希望您的数据不会实际存储为UTF-8。如果实际数据存储在CHAR、VARCHAR2或CLOB列中,则使用Windows-1252字符集存储数据,或者数据存储不正确。您可能错误地配置了NLS环境,因此实际上在数据库中存储UTF-8数据,但希望这里不是这样

根据
DUMP
函数的输出,您希望在数据的第三个位置存储什么字符?0xB6是实际存储在数据库中的数据,该数据库映射到。假设这不是您期望的字符,则数据库中存储的数据似乎已损坏

您的数据是用什么语言编写的?是否所有要存储的字符都存在于中

您是否正在尝试更改数据的存储方式?或者您正在尝试检索其他字符集中的数据

如果数据库字符集为AL32UTF8,国家字符集为AL32UTF16,并且要使用UTF-16将数据存储在数据库中,则需要将数据移动到NVARCHAR2或NCLOB列中


如果您试图将数据以UTF-8格式存储在数据库中,然后以UTF-16格式发送给客户端,则可以通过配置客户端的NLS设置自动完成此操作。具体操作方式取决于客户端访问数据库的方式(JDBC、ODBC等)。

我如何知道我的数据库字符集和国家字符集?我想将列值从UTF-8转换并保存为UTF-16格式。@Pokuri-用查询更新了我的答案,以识别数据库和国家字符集。因此,您希望以UTF-16格式将数据存储在数据库中?@Pokuri-您的数据库和国家字符集是什么?NLS_CHARACTERSET=WE8MSWIN1252 NLS_NCHAR_CHARACTERSET=AL16UTF16@Pokuri-好的。我编辑了您的问题以包含字符集信息,并更新了我的答案。