代码之家  ›  专栏  ›  技术社区  ›  Tom Gullen

删除C中的复合Unicode字符#

  •  1
  • Tom Gullen  · 技术社区  · 3 年前

    我们的日志中出现了有关以下查询的错误:

    SELECT display_term FROM SYS.DM_FTS_PARSER('FORMSOF(INFLECTIONAL, 文看得刺眼(主要是事件表内的显示)将它截图反馈给我们)', 1033, 0, 0) AS DM_FTS_PARSER_1
    

    我们发现是特殊的Unicode字符:

    (
    

    以及

    )
    

    注意,这些不是普通的圆括号,它们似乎是一个字符中的空格和括号,是某种复合Unicode字符。

    过滤出复合Unicode字符或将其分解为复合部分的最佳方法是什么?

    1 回复  |  直到 3 年前
        1
  •  2
  •   ProgrammingLlama Raveena Sarda    3 年前

    documentation ,如果数据库的默认排序规则不是unicode,则应该将查询字符串作为unicode传递:

    解析查询字符串时,sys.dm\u fts\u解析器使用所连接数据库的排序规则,除非将查询字符串指定为Unicode。因此,对于包含特殊字符的非Unicode字符串,例如 ü ç N ,也就是说, N'query_string' .

    因此,我建议将您的查询改为:

    SELECT display_term FROM SYS.DM_FTS_PARSER(N'FORMSOF(INFLECTIONAL, 文看得刺眼(主要是事件表内的显示)将它截图反馈给我们)', 1033, 0, 0) AS DM_FTS_PARSER_1