недопустимый многобайтовый символ (US-ASCII) с направляющими и Ruby 1.9

Python имеет модуль htmlentitydefs , но это не включает функцию, чтобы не выйти из объектов HTML.

у разработчика Python Fredrik Lundh (автор elementtree, среди прочего) есть такая функция на его веб-сайте , который работает с десятичным числом, шестнадцатеричными и именованными сущностями:

import re, htmlentitydefs

##
# Removes HTML or XML character references and entities from a text string.
#
# @param text The HTML (or XML) source text.
# @return The plain text, as a Unicode string, if necessary.

def unescape(text):
    def fixup(m):
        text = m.group(0)
        if text[:2] == "&#":
            # character reference
            try:
                if text[:3] == "&#x":
                    return unichr(int(text[3:-1], 16))
                else:
                    return unichr(int(text[2:-1]))
            except ValueError:
                pass
        else:
            # named entity
            try:
                text = unichr(htmlentitydefs.name2codepoint[text[1:-1]])
            except KeyError:
                pass
        return text # leave as is
    return re.sub("&#?\w+;", fixup, text)

197
задан meagar 15 November 2011 в 05:13
поделиться

3 ответа

Эти наклонные двойные кавычки не являются символами ASCII. Сообщение об ошибке вводит в заблуждение относительно того, что они «многобайтовые».

7
ответ дан 23 November 2019 в 05:13
поделиться

Вы пытались добавить магический комментарий в сценарии, где вы используете не-ASCII CHARS? Это должно идти сверху сценария.

#!/bin/env ruby
# encoding: utf-8

Это работало для меня, как очарование.

690
ответ дан 23 November 2019 в 05:13
поделиться

Если вы хотите легко добавить магические комментарии ко всем исходным файлам проекта, вы можете использовать magic_encoding gem

sudo gem install magic_encoding

затем просто вызовите magic_encoding в терминале из корня вашего приложения.

43
ответ дан 23 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: