28787


python2 における unicode に関して質問です。  
u'-' と u'\u2013' の違いは何でしょうか。(2013 は - のコードポイントだと思います)

[code]

    print u'-'      #=> -
    print u'\u2013' #=> -
    u'-' == u'\u2013' #=> False
    
[/code]


CC BY-SA 3.0
2016-09-09T14:25:34.687
28786
2017-04-28T14:47:58.393
2017-04-28T14:47:58.393
18735
18735
question
python unicode
u'-' と u'\u2013' の違いは何でしょうか?


`u'-'` はコードポイント `0x002D` の文字で、普通にキーボードで入力できる **ハイフン・マイナス** 記号です。ASCII コードの
`0x2D` に対応する文字です。

`u'\u2013'` は、見ての通り、コードポイント `0x2013` の文字で、 **en ダッシュ**
と呼ばれるものです。具体的な用途はよく知らないのですが、Wikipedia の[ダッシュ
(記号)](https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5_\(%E8%A8%98%E5%8F%B7\))の項によると

>   * 区間や範囲を表す。  
>  たとえば10-20と書かれていた場合、これがenダッシュ (10–20) なら「10から20まで」である。これに対してハイフン (10‐20)
> なら「10の20」、マイナス (10−20)なら「10引く20」である
>

だそうです。


CC BY-SA 3.0
2016-09-09T14:55:29.303
28787
2016-09-09T14:55:29.303
2020-06-17T08:14:45.997
-1
3605
28786
answer


utf-8 にエンコードしてみると別の文字であることが分かります。

[code]

    >>> u'-'.encode('utf-8')
    b'-'
    >>> u'\u2013'.encode('utf-8')
    b'\xe2\x80\x93'
    
[/code]

また、Unicodeとしてどんな文字なのかを知る方法があります。

[code]

    >>> import unicodedata
    >>> unicodedata.name(u'-')
    'HYPHEN-MINUS'
    >>> unicodedata.name(u'\u2013')
    'EN DASH'
    
[/code]


CC BY-SA 3.0
2016-09-09T16:39:02.150
28789
2016-09-09T16:39:02.150
806
28786
answer