猿问

测试的时候输入的全角字符串截取完的字符串中有乱码,请问是哪里出问题了?

PC机编码:SJIS,数据库编码:UTF-8
CREATE OR REPLACE FUNCTION SUBSTRB2(str in char, start_position in number, length_ in number)
RETURN char
IS
BEGIN
return convert(substrb(convert(str, 'JA16SJIS', 'AL32UTF8'), start_position, length_), 'AL32UTF8', 'JA16SJIS');
END SUBSTRB2;
/
现在测试的时候输入的全角字符串截取完的字符串中有乱码。请问这个哪块出问题了?

30秒到达战场
浏览 171回答 1
1回答

偶然的你

substr是按字符来计算,一个字母或汉字都按一个字符计算如:substr('智能ABC',2,2)='能A'如果想要按字节来计算则可以采用substrb函数,用法一样substrb('智能ABC',3,4)='能AB'当然还有另外几个按不同编码计算的函数substrc:按Unicode编码,substr2:按UCS2编码,substr4:按UCS4编码。
随时随地看视频慕课网APP

相关分类

Oracle
我要回答