PLSQL - 将UTF-8 NVARCHAR2转换为VARCHAR2

时间:2016-01-10 15:42:18

标签: utf-8 plsql

我有一个表格,其列配置为NVARCHAR2,我可以将字符串保存为UTF-8而不会出现任何问题。 但是应用程序调用的值并不完全支持UTF-8。 这意味着在将字符串转换为HTML字母代码后,将字符串传递给数据库并返回。字符串中的每个字母都转换为此类HTML代码。

我正在寻找一个更简单的解决方案。 我考虑过将它转换为BASE64,但它包含了在应用程序中被认为是非法的各种字符。 另外尝试使用HEXTORAW& RAWTOHEX。

以上都没有帮助。

如果列包含'κόσμε',我需要找到一种方法将其转换/编码为其他东西,但是应该可以从运行应用程序的HTML中进行解码。

1 个答案:

答案 0 :(得分:1)

尝试使用ASCIISTR函数,它会将其转换为类似于JSON编码unicode字符串的东西(它实际上是相同的,除了" \"用来代替" \ u& #34;)然后当你从前端收到它时,尝试使用UNISTR将其转换回unicode。

ASCIISTR:https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions006.htm

UNISTR:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions204.htm

SELECT ASCIISTR(N'κόσμε') FROM DUAL;
SELECT UNISTR('\03BA\1F79\03C3\03BC\03B5') FROM DUAL;
相关问题