今天遇到了个异常空格的问题,与:http://www.cnblogs.com/wangyuyu/p/3711887.html 一致。

写了两行hive语句,看起来完全一样,但是就是一个可以执行,一个不可以。diff出两者不同,但是死活看不出来。

后来发现,由于一个是从qq中copy到onenote中再copy出来的,可能中间发生了转化。具体见下。

-------------------------------------------------------------

今天运营的同学反映有一些店铺的名称后面带空格,我下意识的说不可能啊,我已经处理过了啊。然后就找出来看。

其中有个店铺的名称是“安踏 ”,第一眼看上去好像是带了个空格。然后我就仔细的看了下。

1  pry(main)> "安踏 ".strip
2 => "安踏 "

竟然没有变化。

1 pry(main)> "安踏 "[-1] == " "
2 => false

怪不得,原来不是一个空格。

到底是什么呢? 对,查一下ascii码

1 pry(main)> " ".bytes
2 => [32]

空格的ascii 是32

1 pry(main)> "安踏 "[-1].bytes
2 => [194, 160]

这个竟然是194,160. 原来如此。

原因是字符串中的一个空格(ASCII:32)被UTF-8编码之后变成了字符(ASCII:194 和 160的组合)。在 UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后前台会显示为“?” 号,只是显示为问号而不是真正的问号,所以无法被替换。

解决方法是:

1 Shop.each do |shop|
2    if shop.name.include?(" ")
3      shop.name = shop.name.split(" ")[0]
4      shop.save
5   end
6 end 

异常空格,ASCII (194,160)问题相关推荐

  1. 特殊的空格 - ASCII(160)

    特殊的空格 - ASCII(160) 编程语言-JAVA 1.问题引入 一般, 我们在db中落数据的时候, 都会对String类型的字段做去空格处理, 常用的方法无非trim(). 但是 最近在数据库 ...

  2. 【异常】 ‘ascii‘ codec can‘t decode byte 0xe8 in position 2: ordinal not in range(128)

    [异常] 'ascii' codec can't decode byte 0xe8 in position 2: ordinal not in range(128) 参考文章: (1)[异常] 'as ...

  3. 【js】不间断空格 特殊的空格-ASCII码值160

    键盘输入的空格的ASCII值是32, 而不间断空格(non-breaking space)是ASCII值为160的空格,就是页面上的 所产生的空格. 不间断空格的Unicode编码为\u00A0. 其 ...

  4. 前端特殊空格ASCII码为160,转为32的空格

    项目背景: 用div自定义的输入框,富文本含有标签样式. 问题: 空格输入,在后台保存后,出现乱码,解析不了 解决: 在前端中,有个特殊的空格,就是页面中 在ascii中为160,平时的输入空格为32 ...

  5. 从excel导入数据库过程中遇到的空格转义符(#160;)

    在一次excel导入数据到gridview中,莫名其妙的发现有部分数据导入失败,后台调试后发 现是因为有的字段在excel中后有空格,然后空格导入gridview中时显示为  而并不是我之前判断筛选的 ...

  6. java字符串替换空格符_特殊的空格(Java无法替换字符串中的空格)转

    一.自己的问题 先说一下自己碰到的问题,自己在本地建立了一个json文件,并且把它格式化了(为了看着美观):然后在Java后台中去读取(使用BufferedReader的readline方法),但是读 ...

  7. mysql数据中包含不间断空格(ascii值为194和160)解决办法

    mysql数据中包含不间断空格(ascii值为194和160)解决办法 问题 mysql数据存在这个不间断空格,导致前端显示乱码. 起因 字符串中的一个空格(ASCII:32)被UTF-8编码之后变成 ...

  8. ASCII码为160的空格,填坑

    前端页面有些复制字段时,如果有 形成的空格,其ascii编码值为160,普通空格ascii编码值是32. 两种在java后端语言中是不同的容易造成看起来一样的字符串但实际值不同的bug eg: //空 ...

  9. JavaEE项目bug修复记——一场由特殊空字符(160号ASCII码)引发的血案

    我负责维护的一个JavaEE项目中有这样一个功能:可以用poi批量导入Excel表中的学号并在该系统中创建对应的用户.上周三中午,接到用户反馈,将Excel导入系统后用其中的用户名出现了无法登陆提示用 ...

最新文章

  1. spring boot 启动不连接数据库
  2. Android SDK与API版本的对应关系
  3. 成功解决 class 'AttributeError' : 'Editor' object has no attribute '_Editor__markerMap'
  4. OpenGL合并转换
  5. layuiAdmin打开新窗口、新标签页
  6. ipython版本_使用pyenv切换版本后ipython无法使用解决方法
  7. 常见的字符函数与字符串函数介绍(1)
  8. 不同人眼中的“顶级程序员”,这差距也太大了吧!
  9. sh脚本异常:/bin/sh^M:bad interpreter: No such file ...
  10. xmp文件格式怎么导入ps?ACR预设安装方法
  11. 论文阅读-Generative Image Inpainting with Contextual Attention
  12. 2020.04.10 【ABAP随笔】- ABAP面试分享
  13. 【哈夫曼树】JZOJ_4210 我才不是萝莉控呢
  14. BigDecimal和DecimalFormat
  15. 使用pdfcrack破解PDF密码(Linux)
  16. 安全邮箱怎么注册?邮箱地址是什么?快速了解tomvip邮箱信息
  17. 上手 GAMES 104 课程 Pilot 游戏引擎~~
  18. 游戏原画可以自学么?有没有自学的大概流程
  19. 智能电网如何实现 ?
  20. 记:应聘富士康,软件开发工程师

热门文章

  1. 演示如何使用application.yml文件
  2. 青海高考成绩查询日期2021,2021年青海高考成绩什么时候出来 公布时间
  3. 定积分证明题例题_第二十天(20,11,27):积分中值定理
  4. python爬取有道词典_利用Python3和Charles爬取有道词典,生成翻译exe单文件
  5. 获取系统版本号_数据库系统原理
  6. python读取文件参数_Python 通过配置文件 读取参数进行
  7. java不看答案不会_Java新手必备:20道java基础面试题,不看答案你会几道题?
  8. arduino向串口发送数据时掉包_[技术]清楚简单,一种串口触摸屏的开发流程和方法介绍...
  9. android 获取其他布局,android listview onItemClick中获取其他item的布局
  10. 各数据结构算法时间复杂度图【笔记自用】