云数据库 GAUSSDB-平台和客户端兼容性:enable_convert_illegal_char

时间:2024-12-19 14:11:21

enable_convert_illegal_char

参数说明对输出结果中的非法编码是否不进行校验并以占位符替换显示。多租场景下,该参数可在PDB级别设置。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示开启,特殊字符在查询时将替换为convert_illegal_char_mode参数指定符号的编码。
  • off:表示关闭,查询结果中包含的超出当前字符集编码规则外的编码时会在校验后报错。

默认值off。在PDB场景内,若未设置该参数,则继承来自全局的设置。

设置方式该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

设置建议推荐使用默认值,仅在数据中存在特殊字符且需要对特殊字符进行强制不报错处理时开启该参数。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

  1. 当数据库字符集为utf8、zhs16gbk、gb18030、gb18030-2022、latin1,enable_convert_illegal_char=on时生效,且当数据库客户端与服务端字符集不相同时,非法编码将以占位符形式显示。
  2. 特殊字符范围:本文所指的特殊字符范围仅包括完全异常编码和混合编码,不支持\u0000字符。若字符编码中包含\u0000字符,在使用时通常会在\u0000处截断,无法保证数据的完整性。
  3. 在数据库客户端与服务端字符集不相同时,超出当前服务端字符集外的特殊字符只能通过函数dbe_raw.cast_to_varchar2()写入或导入导出工具写入数据库。
  4. 当开启GUC参数时,特殊字符在下表所列的函数、高级包函数中的表现为:
    • 在客户端与服务端字符集一致时,特殊字符在查询时不报错,与开启GUC参数前的行为保持一致。
    • 在客户端与服务端字符集不一致时,特殊字符在查询时显示为占位符(默认为?)。
    • 不建议客户使用函数处理包含特殊字符的字符串,下表所列函数处理包含特殊字符的字符串不会产生报错,但无法保证结果的正确性。
表13 特殊字符支持的函数及高级包函数

序号

函数名/高级包函数名

1

bit_length(string)

2

btrim(string text [, characters text])

3

char_length(string)

character_length(string)

4

chr(cvalue int|bigint)

chr(integer)

5

concat(str1,str2)

6

concat_ws(sep text, str"any" [, str"any" [, ...] ])

7

decode(string text, format text)

8

dump(expr[, return_fmt [, start_position [, length ] ] ])

9

encode(data bytea, format text)

10

find_in_set(text, set)

11

format(formatstr text [, str"any" [, ...] ])

12

left(str text, n int)

13

length(string)

14

lengthb(text/bpchar)

15

ltrim(string [, characters])

16

md5(string)

17

notlike(x bytea name text, y bytea text)

18

octet_length(string)

19

overlay(string placing string FROM int [for int])

20

quote_ident(string text)

21

quote_literal(string text)

22

quote_nullable(string text)

23

rawcat(raw,raw)

24

regexp_count(string text, pattern text [, position int [, flags text]])

25

regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]])

26

regexp_like(source_string, pattern [, match_parameter])

regexp_like(text,text,text)

27

regexp_matches(string text, pattern text [, flags text])

28

regexp_replace(string, pattern, replacement [,flags ])

29

regexp_split_to_array(string text, pattern text [, flags text ])

30

regexp_split_to_table(string text, pattern text [, flags text])

31

regexp_substr(source_char, pattern)

regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]])

32

repeat(string text, number int )

33

repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [, flags text]]]])

34

replace(string text, from text, to text)

35

replace(string, substring)

36

reverse(str)

37

right(str text, n int)

38

rtrim(string [, characters])

39

sha(string)

40

sha1(string)

41

sha2(string,hash_length)

42

split_part(string text, delimiter text, field int)

43

substring(string [from int] [for int])

substring(string from pattern for escape)

substring(string from pattern)

44

substring_inner(string [from int] [for int])

45

tconvert(key text, value text)

46

to_single_byte(char)

47

translate(string text, from text, to text)

48

trim([leading |trailing |both] [characters] from string)

49

unistr(string)

50

vsize(expr)

51

PKG_UTIL.RAW_CAST_FROM_VARCHAR2

52

PKG_UTIL.LOB_CONVERTTOCLOB

53

PKG_UTIL.LOB_RAWTOTEXT

54

PKG_UTIL.LOB_TEXTTORAW

55

PKG_UTIL.RAW_CAST_TO_VARCHAR2

56

DBE_OUTPUT.PUT

57

DBE_OUTPUT.PUT_LINE

support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0365.html