u"""Convert Half-width (Hankaku) Katakana to Full-width (Zenkaku) Katakana,
    Full-width (Zenkaku) ASCII and DIGIT to Half-width (Hankaku) ASCII
    and DIGIT.
    Additionally, Full-width wave dash (〜) etc. are normalized

    Params:
        <unicode> text
        <unicode> ignore
    Return:
        <unicode> converted_text

def normalize(text, mode='NFKC', ignore=''):
    u"""Convert Half-width (Hankaku) Katakana to Full-width (Zenkaku) Katakana,
    Full-width (Zenkaku) ASCII and DIGIT to Half-width (Hankaku) ASCII
    and DIGIT.
    Additionally, Full-width wave dash (〜) etc. are normalized

    Params:
        <unicode> text
        <unicode> ignore
    Return:
        <unicode> converted_text
    """
    text = text.replace(u'〜', u'ー').replace(u'～', u'ー')
    text = text.replace(u"’", "'").replace(u'”', '"').replace(u'“', '``')
    text = text.replace(u'―', '-').replace(u'‐', u'-')
    return unicodedata.normalize(mode, text)