zoukankan      html  css  js  c++  java
  • 异常空格,ASCII (194,160)问题

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

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

      

    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 
  • 相关阅读:
    EJB>Session Beans
    JSF>标准转换器(Converter)
    EJB>定时服务(Timer Service)
    EJB>实体继承
    EJB>拦截器(Interceptor)
    JSF>输入、输出、命令、选择、表格、其他标签
    JBoss的配置
    JSF>JSF 生命周期
    EJB>改变sessionbean的JNDI名称
    JSF>错误讯息处理
  • 原文地址:https://www.cnblogs.com/wangyuyu/p/3711887.html
Copyright © 2011-2022 走看看