【数据库使用】 异常空格
【摘要】 背景使用replace进行替换时,无法替换SELECT replace(‘1 2 3456’,’ ‘,’');第一个空格无法替换,第二个可以替换成功。把第一个空格复制出来,放到客户端编辑器里时被自动转换成普通空格,通过观察很难识别。规避使用replace把目标字段先截取出来,再嵌套在replace里。根因普通空格的ascII是32异常空格的ascII是194原因是字符串中的一个空格(ASCI...
背景
使用replace进行替换时,无法替换
SELECT replace(‘1 2 3456’,’ ‘,’');
第一个空格无法替换,第二个可以替换成功。
把第一个空格复制出来,放到客户端编辑器里时被自动转换成普通空格,通过观察很难识别。
规避
使用replace把目标字段先截取出来,再嵌套在replace里。
根因
普通空格的ascII是32
异常空格的ascII是194
原因是字符串中的一个空格(ASCII:32)被UTF-8编码之后变成了字符(ASCII:194 和 160的组合)。在 UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后前台会显示为“?” 号,只是显示为问号而不是真正的问号,所以无法被替换。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)