DB Oracle 19c
NLS:
| 价值| VALUE |
| --| ------------ |
| AL16UTF16| AL16UTF16 |
| AL32UTF8| AL32UTF8 |
创建XML:
SELECT xmlroot(xmlagg(xmlelement("MA",
xmlforest(1 "STATUS",
v.app_type "APP_TYPE",
v.fname "FNAME",
v.pname "PNAME",
v.lname "LNAME",
v.dob "DOB",
v.dob_od "DOB_OD",
v.pob "POB",
v.inc_tm "INC_TM",
v.gender "GENDER",
v.educ_lvl "EDUC_LVL",
v.marit_st "MARIT_ST",
v.kids "KIDS"))),
version '1.0" encoding="UTF-8') AS xml
FROM nh_data_vector v
WHERE v.id_nh = 1
字符串
已正确创建并显示XML。
如果我使用xmlserialize和make blob,则字符串会中断。
SELECT xmlserialize(document xmlroot(xmlagg(xmlelement("MA",
xmlforest(1 "STATUS",
v.app_type "APP_TYPE",
v.fname "FNAME",
v.pname "PNAME",
v.lname "LNAME",
v.dob "DOB",
v.dob_od "DOB_OD",
v.pob "POB",
v.inc_tm "INC_TM",
v.gender "GENDER",
v.educ_lvl "EDUC_LVL",
v.marit_st "MARIT_ST",
v.kids "KIDS"))),
version '1.0" encoding="UTF-8') AS BLOB encoding 'UTF-8'
version '1.0') AS xml
FROM nh_data_vector v
WHERE v.id_nh = 1
<MA>
<STATUS>1</STATUS>
<APP_TYPE>4</APP_TYPE>
<FNAME>Р”РњР˜РўР Р˜Р™</FNAME>
<PNAME>Р’Р›РђР”Р˜РњР˜Р РћР’Р˜Р§</PNAME>
<LNAME>Р—Р˜РњР˜Рќ</LNAME>
<DOB>1991-11-20</DOB>
<DOB_OD>1991-11-20</DOB_OD>
<POB>ГОР.САРАТОВ</POB>
<INC_TM>100000</INC_TM>
<GENDER>1</GENDER>
<EDUC_LVL>3</EDUC_LVL>
<MARIT_ST>1</MARIT_ST>
<KIDS>0</KIDS>
</MA>
的数据
用解码器在网上看到的是Windows-1251的编码。但是我怎么得到这个编码呢?我需要使用UTF-8。
我使用convert()
,但它没有帮助。
1条答案
按热度按时间deikduxw1#
数据库
NLS_CHARACTERSET
只是其中的一部分。您还需要告诉数据库您的客户端使用的字符集。除非你有一个基于Java/JDBC的客户端,否则这通常是通过环境变量NLS_LANG
来完成的。请参阅OdbcConnection返回的中文字符为“?“